Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php __自动加载错误?_Php_Autoload_Spl - Fatal编程技术网

Php __自动加载错误?

Php __自动加载错误?,php,autoload,spl,Php,Autoload,Spl,我有一个服务器,上面有很多客户,当我开发时,我包括了init.php,在其中我有一个\uuuu autoloader()函数,其中包括带有目录名(\uuuu file\uuu)的文件,例如“/classes/”$className 但是昨天我看到服务器找不到特定的类,我重新启动了apache,然后它又工作了 每个客户都有自己的init.php。。。(因此在同一台服务器上有许多自动加载) customer1/init.php:holds__autoload() customer1/classes/

我有一个服务器,上面有很多客户,当我开发时,我包括了init.php,在其中我有一个
\uuuu autoloader()
函数,其中包括带有
目录名(\uuuu file\uuu)的文件,例如“/classes/”$className

但是昨天我看到服务器找不到特定的类,我重新启动了apache,然后它又工作了

每个客户都有自己的init.php。。。(因此在同一台服务器上有许多自动加载)

customer1/init.php:holds__autoload() customer1/classes/class.php customer2/init.php:holds\uuu autoload() customer2/classes/class.php 我还没有做过一些测试,我希望在我尝试重现问题之前有人能回答我的问题,但是您认为当您同时收到2个或更多请求时,php是否可能使用错误的自动加载函数

spl_自动加载_注册解决方案吗


非常感谢您的一些想法或头脑风暴。

我猜您的_autoload()函数中应该有一个输入错误,或者您包含了错误的init.php文件

此外,dir_name()不存在,您应该将其改为(),或者如果您使用的是PHP>=5.3,也可以使用新名称来实现相同的效果

编辑:根据您的评论,使用应使用:

require(realpath(dirname(__FILE__)) . '/classes/' . $className);


每个PHP请求都是完全独立的,事实上,在同一个PHP请求中不可能有两个名为
\uu autoload()
的函数,因此它们不能相互干扰。可能的问题:

  • 您包含了错误客户的
    init.php
  • 您忘了包含
    init.php
    文件,在这种情况下根本没有自动加载

您有一个输入错误idéas=>ideasYeah,但它已经工作了大约3个月。昨天我第一次看到它,但之前我有一个类似的问题,当我有这个结构时/test/classes/class.php/test/init.php/classes/class.php/init.php So/test/是/。。。当我导航到/测试时,有时自动加载也会遇到同样的问题。。。。重新启动服务器,然后它工作了一段时间,直到我开始在/上冲浪,等等…当包含init.php时,我从不使用绝对路径。。。包括(dirname(FILE)。'/../init.php');事实上,我不知道这是怎么跳过我的眼睛的。chdir()或类似的代码应该会弄乱你的代码,使用上面的代码应该可以解决你的问题。很好,今晚我会尝试重现我的问题,他们会尝试你的解决方案。谢谢你的提示。
require(realpath(dirname(__FILE__)) . '/classes/' . $className);
require(realpath(__DIR__) . '/classes/' . $className);