题
我有一个有很多客户的服务器,当我开发时,我包含了我的 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 是解决方案吗?
非常感谢您的一些想法或集思广益。
解决方案
我的猜测是,你应该有一个错字在您的信息__autoload()的一个函数或要包括的错误的init.php文件。
另外,DIR_NAME()不存在,则应该改变,要目录名称一>()代替或还可以使用新的的 DIR 强>恒定获得相同的效果,如果您使用PHP> = 5.3。
编辑:在您的评论的光,使用中应使用:
require(realpath(dirname(__FILE__)) . '/classes/' . $className);
或
require(realpath(__DIR__) . '/classes/' . $className);
其他提示
每个 PHP 请求都是完全独立的,事实上你不可能有两个名为 __autoload()
在同一个 PHP 请求中,因此它们不能干扰。可能出现的问题:
- 您添加了错误的客户
init.php
- 您忘记包括
init.php
文件,在这种情况下有 不 完全自动加载。
不隶属于 StackOverflow