在PHP 5.4中禁用严格的标准

我目前正在php 5.4上运行一个站点,在此之前我正在5.3.8上运行我的站点。 不幸的是,php 5.4结合了E_ALLE_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的。