上周,我在 Slicehost 的一个切片上遇到了一个非常烦人的错误。似乎 PHP 时不时会因致命错误而失败,提示某个函数未定义。该函数会发生变化,但始终是核心 PHP 函数,例如 defined()、version_compare() 等。在使用几个不同的 PHP 应用程序(PHPMyAdmin、我自己定制的应用程序等)时都出现了这个问题,这让我相信问题并不特定于正在运行的代码。
以下是一些详细信息: - Debian Lenny - Apache 2.2.9 - 带有 Suhosin-Patch 的 PHP 5.2.6-1+lenny4(运行 eAccelerator 0.9.6)
Apache 和 PHP 是从 Debian 软件包安装的。错误日志显示没有异常。
我以为内存可能是一个问题,但 free -m 几乎总是报告超过 100MB 的可用空间。我还想调查这个问题是否与 eAccelerator 有关,但测试这个理论非常困难,因为这个问题并不经常出现,而且我在这个安装上使用 eAccelerator 已有数月,到目前为止没有任何问题。
有人遇到过这样的事情吗?为什么 PHP 会报告未定义的核心函数?
答案1
如果你使用 php.ini 指令暂时禁用 Suhosin,会发生什么情况
suhosin.simulation = On
这有效果吗?
您有多个 php.ini 文件吗?请尝试locate php.ini
或find / -name php.ini
作为替代方案,您可以编写一个脚本来检查这些函数是否存在,如果不存在,则输出phpinfo()
,以便检查是否存在问题。或者可能添加错误处理程序它会通过电子邮件向您发送更多详细信息,以帮助您追踪此问题。
我从事 PHP 编程十余年,从未听说过这种情况……我只是猜测。我很想知道问题是什么!