2012-04-02 120 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