我目前在php 5.4上运行一个网站,在此之前我在5.3.8上运行我的网站。不幸的是,php 5.4结合了E_ALL
和E_STRICT
,这意味着我以前的error_reporting
设置现在不起作用。我以前的值是E_ALL & ~E_NOTICE & ~E_STRICT
我应该一次启用一个值吗?
我有太多错误,文件包含太多代码供我修复。
答案 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或其他任何使用它才能使其生效。在这个问题上搁置我们的大脑一段时间,似乎在服务重新启动之前没有任何影响,大概是因为网站正在缓存。