我有一个服务器上有很多客户,当我开发时,我包含了我的init.php,其中我有__autoloader()
函数,其中包含例如dir_name(__FILE__)."/classes/".$className
的文件。
但是昨天我看到服务器找不到特定的类,我重新启动apache然后再次工作。
每个客户都有自己的init.php ...(因此在同一台服务器上有很多__autoloads)
customer1/init.php : holds __autoload() customer1/classes/class.php customer2/init.php : holds __autoload() customer2/classes/class.php
我还没有做过一些测试,我希望有人可以在我尝试重现问题之前回答我的问题,但是你认为当你在同一时间收到2个或更多请求时,php可能会采取错误的自动加载功能时间?
spl_autoload_register是解决方案吗?
非常感谢你的一些想法或头脑风暴。
答案 0 :(得分:2)
我的猜测是你的任何一个__autoload()函数都应该输入错误,或者你包含了错误的init.php文件。
此外,dir_name()不存在,您应该将其更改为dirname(),或者如果您使用的是PHP> =也可以使用新的DIR constant获得相同的效果5.3。
编辑:根据您的评论,请使用:
require(realpath(dirname(__FILE__)) . '/classes/' . $className);
或
require(realpath(__DIR__) . '/classes/' . $className);
答案 1 :(得分:0)
每个PHP请求都是完全独立的,实际上你不可能在同一个PHP请求中有两个名为__autoload()
的函数,所以它们不能干涉。可能的问题:
init.php
init.php
文件,在这种情况下,根本没有没有自动加载。