更新到php 5.4.9后出现静态标准错误

时间:2013-01-14 05:03:47

标签: php cakephp strict

将PHP更新到版本5.4后,我收到以下错误

Strict Standards: Non-static method Debugger::invoke() should not be called statically, assuming $this from incompatible context in /usr/share/php/cake/libs/debugger.php on line 575 
Strict Standards: Non-static method Debugger::getInstance() should not be called statically, assuming $this from incompatible context in /usr/share/php/cake/libs/debugger.php on line 575

我已经尝试过以下解决方案

Error while Disabling error reporting in CakePHP

Cakephp doesn't work after installing php5-curl package(无法找到“Cake”文件夹,因为我已经烘焙了我的项目)

Wampserver cakephp 1.3 Strict standards error

How to eliminate php5 Strict standards errors?

PHP 5 disable strict standards error

https://stackoverflow.com/questions/11799085/turn-off-php-strict-standards?lq=1(无法关闭错误)

每次更改后清除蛋糕缓存,网络浏览器缓存,Cookie和重新启动的服务器。甚至尝试过私密浏览和chrome,firefox,也就是。

2 个答案:

答案 0 :(得分:8)

我相信这是因为这个应用程序是基于旧版本的CakePHP构建的,它可能会使用一些不推荐使用的函数。 如果您(或其他人)可以将Cake升级到新的稳定分支,那将是非常棒的。 截至目前,在您的core.php中尝试此操作,您可以从错误报告中删除E_STRICT:

即转到app / Config / core.php找到

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

将其替换为

Configure::write('Error', array(
    'handler' => 'ErrorHandler::handleError',
    'level' => E_ALL & ~E_STRICT & ~E_DEPRECATED,
    'trace' => true
));

答案 1 :(得分:4)

更改error_reporting函数确实可以解决此问题。然而,cakephp似乎在几个地方设置了这些标志,这就是为什么解决方案可能不适合你(我经历了同样的事情)

在源代码范围内搜索" error_reporting"并且您会发现它在多个文件中使用。添加标志" ~E_STRICT"无论你在哪里。例如:

error_reporting(E_ALL & ~E_STRICT & ~E_DEPRECATED);

你会在/cake/bootstrap.php,/cake/libs/configure.php,/cake/console/cake.php等地方看到它。我只是将它们全部改为排除E_STRICT和问题得到解决。