我不知道如何解决PHP偶尔陷入的这种奇怪状态。如果有什么想法,我将不胜感激。
也许在过去的一年里,我的网站会有3到4次开始返回500个错误,日志显示:
PHP致命错误:无法在第0行执行方法dw__autolload
dw__autolload是通过spl_autoload_register注册的。当我重新启动apache时,这个问题就消失了,我忘记了它好几个月。我在ubuntu 10.04.3上运行APC, php 5.3.2-1ubuntu4.10。我意识到这里没有什么可说的!
从这个错误发生的地方开始,我冒着风险(心灵调试,因为你没有更多的细节)说,这是因为调用自动加载时已经抛出了一个异常。
也就是说,我看不出这到底是怎么发生的。当前异常在调用自动加载程序之前和调用每个SPL自动加载程序函数之后都被清除。我认为,如果没有重现这个问题的脚本,我们永远无法得出结论。所有的可能性是:
- 执行已被关闭
- 当前有一个异常
- 函数不再有效(我看到这种情况只发生在PHP中的错误,但无论如何,这是不太可能的,因为它几乎肯定会生成一个警告之前)
- 自动加载器函数需要一个引用(同样,这也会在之前生成一个警告,并且你的自动加载器永远不会工作)