Php __自动加载错误?
我有一个服务器,上面有很多客户,当我开发时,我包括了init.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/
\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
require(realpath(dirname(__FILE__)) . '/classes/' . $className);
require(realpath(__DIR__) . '/classes/' . $className);