E_STRICT消息虽然未设置但仍被抛出

acm*_*cme 3 php error-reporting

自从我的测试服务器更新到PHP 5.3.3(Debian Squeeze)后,我遇到了关于PHP中错误报告的奇怪行为.

我像这样设置error_reporting:

error_reporting(E_ALL);
Run Code Online (Sandbox Code Playgroud)

并通过检查设置

echo error_reporting();
Run Code Online (Sandbox Code Playgroud)

与之相呼应30719.根据php.net,这意味着"所有错误和警告,如支持,除了级别E_STRICT.".

但是在下一行(类定义abstract class formInputContainer extends formContainer implements formElementValueable { ... })中,这会产生以下消息:

严格(2048):formInputContainer :: addElement()的声明应该与formContainer :: addElement()的声明兼容

为什么E_STRICT消息虽然未设置但仍会回显?即使更改为E_ALL&~E_STRICT也无济于事.

irc*_*ell 5

即使它们没有设置,你看到它们的原因是这些是在编译时抛出的(好吧,解析时间).这意味着在您error_reporting()拨打电话之前会触发错误.真正的解决方法是更改要从定义中php.ini删除的设置E_STRICT.要确保您正在编辑正确的文件,请检查phpinfo().