繁体   English   中英

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

[英]How to eliminate php5 Strict standards errors?

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

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

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

我发现有些人通过将php.ini中的error_reporting设置为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。

php 5.4的更改之一是E_STRICT现在是E_ALL的一部分

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

error_reporting(E_ALL ^ E_STRICT);

并再次兼容5.4之前的版本。

无需修改cake核心文件(如果您要更新cake版本,该文件很烂),请进入Config / core.php文件并查找错误处理程序配置:

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

并用以下内容替换“级别”:

...
'level' => E_ALL & ~E_STRICT & ~E_DEPRECATED,
...

请更换

error_reporting = E_ALL 

在您的php.ini中

error_reporting = E_ALL & ~E_STRICT

为了我

error_reporting(E_ALL ^ E_STRICT);

对此问题的可接受答案中显示的内容无效,并且为我的Joomla网站在JError错误中检测到了一个无限循环

您正在使用更新的php版本。 在php 5.4中,E_STRICT是E_ALL的一部分

在cake 1.3中,打开文件/cake/bootstrap.php并更改error_reporting,如下所示

error_reporting(E_ALL & ~E_STRICT & ~E_DEPRECATED);

如果您在蛋糕控制台输出中遇到了PHP Strict警告,请查看一下app/config/core.php

在CakePhp 1.3中, error_reporting(...)'log'选项覆盖,因此请确保在此处排除E_STRICT

/**
 * CakePHP Log Level:
 *
 * In case of Production Mode CakePHP gives you the possibility to continue logging errors.
 *
 * The following parameters can be used:
 *  Boolean: Set true/false to activate/deactivate logging
 *    Configure::write('log', true);
 *
 *  Integer: Use built-in PHP constants to set the error level (see error_reporting)
 *    Configure::write('log', E_ERROR | E_WARNING);
 *    Configure::write('log', E_ALL ^ E_NOTICE);
 */
Configure::write('log', E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);

确保已更新正确的php.ini文件-如果使用以下代码在根目录中创建php文件

<?php

phpinfo();

?>

并将其加载到您的网络浏览器中,它将告诉您正在使用哪个ini文件,以防您错过其中一个文件。

htaccess文件也有可能通过php_flag error_reporting值来设置该值,该值也可以按目录设置。

文件夹(root)cake中的bootstrap.php文件

if (!defined('E_ALL')) {
    define('E_ALL', 8192);
}

从目录(root)cake \\ libs中下载debugger.php文件

error_reporting(E_ALL ^ ~E_STRICT ^ ~E_DEPRECATED);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM