我有一个有很多客户的服务器,当我开发时,我包含了我的 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 文件,在这种情况下有 完全自动加载。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top