如何消除php5严格的标准错误?

qxl*_*lab 26 php cakephp cakephp-1.3

将我的PHP升级到5.4.3(WAMP服务器2.2)后,我在CakePHP 1.3中创建的Web应用程序在我的索引中显示以下错误:

严格的标准:重新定义C语言中类Object的已定义构造函数:第63行的...\cake\cake\libs\object.php

严格的标准:非静态方法Configure :: getInstance()不应该在第49行的C:...\cake\cake\bootstrap.php中静态调用

我发现有些人通过将error_reportingphp.ini 设置为来解决这个问题E_ALL & ~E_STRICT.

我在我的计算机上存在的php.ini文件(C:\ wamp\bin\php\php5.4.3和C:\ wamp\bin\apache\apache2.4.2\bin)中都这样做但它没有解决问题.

我也尝试php_value error_reporting 6143输入C:...\cake.htaccess但没有成功.

有谁知道我该如何解决这个问题?由于火鸟,我无法升级我的CakePHP.

Jvd*_*erg 23

php 5.4中的一个变化是E_STRICT现在是E_ALL的一部分

因此,在/cake/bootstrap.php中,您可以从错误报告中删除E_STRICT:

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

并在5.4版本之前再次兼容.

  • 谢谢!!我把"error_reporting(E_ALL&~E_STRICT&~E_DEPRECATED);" 在我的C:\ ...\cake\cake\bootstrap.php文件中,解决了这个问题. (6认同)

Cla*_*ldt 13

如果你想更新你的蛋糕版本,而不是修改蛋糕核心文件,请进入你的Config/core.php文件并查找错误处理程序配置:

Configure::write('Error', array(
    'handler' => 'ErrorHandler::handleError',
    'level' => E_ALL & ~E_DEPRECATED,
    'trace' => true
));
Run Code Online (Sandbox Code Playgroud)

并用这个替换'level':

...
'level' => E_ALL & ~E_STRICT & ~E_DEPRECATED,
...
Run Code Online (Sandbox Code Playgroud)


Ruu*_*uut 9

请更换

error_reporting = E_ALL 
Run Code Online (Sandbox Code Playgroud)

在你的php.ini中,用

error_reporting = E_ALL & ~E_STRICT
Run Code Online (Sandbox Code Playgroud)

为了我

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

在这个问题的接受答案中显示的不起作用,并为我的Joomla网站在JError错误中检测到无限循环.