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

aelbi1ox  于 12个月前  发布在  PHP
关注(0)|答案(3)|浏览(246)

我得到以下错误后更新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(无法找到“蛋糕”文件夹,因为我已经烘焙了我的项目)
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,火狐,即也.

j2cgzkjk

j2cgzkjk1#

我相信这是因为这个应用程序是建立在一个旧版本的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
));

rqqzpn5f

rqqzpn5f2#

更改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排除了,问题就解决了。

1bqhqjot

1bqhqjot3#

最好的选择是将CakePHP更新到最新版本,PHP 8已经修复了这个问题。但是如果这不可能,你必须将static添加到所有使用双冒号::调用的函数中。

static function invoke(&$debugger) {
        set_error_handler(array(&$debugger, 'handleError'));
    }
}

字符串

相关问题