6

将 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

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

在 CakePHP 中禁用错误​​报告时出错

安装 php5-curl 包后 Cakephp 不起作用(由于我已经烘焙了我的项目,因此无法找到“Cake”文件夹)

Wampserver cakephp 1.3 严格标准错误

如何消除 php5 Strict 标准错误?

PHP 5 禁用严格标准错误

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

每次更改后清除蛋糕缓存、Web 浏览器缓存、cookie 并重新启动服务器。甚至在私人浏览和chrome、firefox中也试过。

4

2 回答 2

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
));
于 2013-07-26T04:31:23.037 回答
4

更改 error_reporting 函数确实可以解决此问题。但是,cakephp 似乎在几个地方设置了这些标志,这就是为什么该解决方案可能对您不起作用的原因(我也经历过同样的事情)

在源代码范围内搜索“error_reporting”,您会发现它在多个文件中使用。尽可能添加标志“~E_STRICT”。例如:

error_reporting(E_ALL & ~E_STRICT & ~E_DEPRECATED);

You'll see it in places like /cake/bootstrap.php, /cake/libs/configure.php, /cake/console/cake.php, etc. I just changed them all to exclude E_STRICT and the problem was fixed.

于 2016-01-21T08:43:02.407 回答