[英]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.