在PHP 5.4中禁用严格标准

时间:2012-04-02 20:23:09

标签: php error-handling

我目前在php 5.4上运行一个网站,在此之前我在5.3.8上运行我的网站。不幸的是,php 5.4结合了E_ALLE_STRICT,这意味着我以前的error_reporting设置现在不起作用。我以前的值是E_ALL & ~E_NOTICE & ~E_STRICT我应该一次启用一个值吗?

我有太多错误,文件包含太多代码供我修复。

5 个答案:

答案 0 :(得分:138)

正如评论者所说,最佳选项是修复错误,但是时间或知识有限,这并不总是可行的。在你的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中无法正常工作。

希望这有帮助。

答案 1 :(得分:2)

.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 Server API CGI / FastCGI使用

ini_set('error_reporting', 30711);

error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE);

在您的PHP代码中, 或PHP配置文件.user.ini | php.ini修改:

error_reporting = E_ALL & ~E_STRICT & ~E_NOTICE

在虚拟主机上,服务器级别。

答案 2 :(得分:1)

当我在同一时间在两个地方设置error_reporting时,它对我有用

用PHP代码中的某个地方

ini_set('error_reporting', 30711);


和.htaccess文件

php_value error_reporting 30711

答案 3 :(得分:1)

如果您还需要禁用E_DEPRACATED,请使用:

php_value error_reporting 22527

在我的案例中,CMS Made Simple正在抱怨&#34; E_STRICT在error_reporting&#34;中启用以及#34; E_DEPRECATED已启用&#34;。将这一行添加到.htaccess解决了两个错误配置。

答案 4 :(得分:0)

抬头,您可能需要重新启动LAMP,Apache或其他任何使用它才能使其生效。在这个问题上搁置我们的大脑一段时间,似乎在服务重新启动之前没有任何影响,大概是因为网站正在缓存。