在PHP 5.4中禁用严格的标准
我目前正在php 5.4上运行一个站点,在此之前我正在5.3.8上运行我的站点。 不幸的是,php 5.4结合了E_ALL
和E_STRICT
,这意味着我以前的error_reporting
设置现在不起作用。 我以前的值是E_ALL & ~E_NOTICE & ~E_STRICT
我应该只是一次启用一个值?
我有太多的错误和文件包含太多的代码,我要修复。
正如评论者所说, 最好的select是纠正错误,但是时间或知识有限,这并不总是可能的。 在你的php.ini中改变
error_reporting = E_ALL
至
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
如果您无法访问php.ini,则可以将其放在.htaccess文件中:
php_value error_reporting 30711
这是E_ALL值(32767)和删除E_STRICT(2048)和E_NOTICE(8)值。
如果您无法访问.htaccess文件或者未启用,则可能需要将其放在从浏览器调用加载的任何脚本的PHP部分的顶部:
error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE);
其中一个应该可以帮助你使用这个软件。 通知和严格的东西是问题或潜在问题的指标,但您可能会发现一些代码在PHP 5.4中无法正常工作。
希望这可以帮助。
.htaccess php_value只有在使用PHP Server API作为Web服务器Apache的模块时才起作用。 使用IfModule语法:
# PHP 5, Apache 1 and 2. <IfModule mod_php5.c> php_value error_reporting 30711 </IfModule>
如果您使用PHP服务器API CGI / FastCGI使用
ini_set('error_reporting', 30711);
要么
error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE);
在您的PHP代码或PHPconfiguration文件.user.ini |中 php.ini修改:
error_reporting = E_ALL & ~E_STRICT & ~E_NOTICE
在您的虚拟主机,服务器级别。
它为我工作,当我在同一时间在两个地方设置error_reporting
在PHP代码中的某处
ini_set('error_reporting', 30711);
和.htaccess文件中
php_value error_reporting 30711
如果您还需要禁用E_DEPRACATED,请使用:
php_value error_reporting 22527
在我的情况下,CMS Made Simple正在抱怨“在error_reporting中启用了E_STRICT”以及“E_DEPRECATED已启用”。 将这一行添加到.htaccess解决了两个错误configuration。
开头,你可能需要重新启动LAMP,Apache或者你使用的任何东西来使其生效。 在这个问题上绞尽脑汁,似乎在服务重新启动之前似乎没有任何影响,大概是因为该网站是caching的。