2012-04-02 126 views
93

我目前在php 5.4上运行一个站点,在此之前我在5.3.8上运行我的站点。不幸的是,php 5.4结合了E_ALLE_STRICT,这意味着我以前的设置error_reporting现在不起作用。我以前的值是E_ALL & ~E_NOTICE & ~E_STRICT我应该只启用一个值?禁用PHP 5.4中的严格标准

我有太多太多的错误,并在文件中包含我解决太多的代码。

+11

建议...修复代码或错误会变得更好,更难以调试 – Baba 2012-04-02 20:26:09

+7

s /不幸/幸运 – NikiC 2012-04-02 20:30:37

+95

感谢您的建议,但我缺乏重新编写整个jfusion phpbb3插件所需的知识。感谢您居高临下。 – icomrade 2012-04-02 20:31:16

回答

136

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

希望这会有所帮助。

+0

感谢您的帮助,这似乎适用于大多数严格的错误。 – icomrade 2012-04-03 00:32:10

+10

我使用的是php 5.4.5,我尝试了以上所有内容,但是我无法禁用严格的通知:(任何其他想法? – 2012-08-27 16:44:55

+2

您可以尝试将〜〜E_DEPRECATED与其他部分一起放入error_reporting()中。你看到了吗? – 2012-08-29 07:17:51

1

在PHP代码

ini_set('error_reporting', 30711); 


和.htaccess文件

php_value error_reporting 30711 
+0

只有在没有访问php.ini的情况下才能工作,上述另一个方法本身不起作用,只返回500错误。两个在一起宝贝! – 2014-08-15 10:53:35

1

如果您需要为我工作,当我设置在两个地方同时使用error_reporting

某处禁用E_DEPRACATED此外,使用:

php_value error_reporting 22527 

对我而言,CMS Made Simple抱怨“E_STRICT在error_reporting中启用”以及“E_DEPRECATED已启用”。将这一行添加到.htaccess可解决两种错误配置。

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服务器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 

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

0

单挑,您可能需要重新启动LAMP,Apache或任何您使用的设备才能生效。在我们的大脑上花了一段时间,似乎在服务重新启动之前似乎没有任何影响,大概是因为该网站是缓存的。

+0

没有。这是因为Apache需要重新加载PHP的设置。这是AFAIK只在服务启动时完成。 – svin83 2017-08-11 08:02:20