執行時配置
這些函式的行為受 php.ini 中的設定影響。
名字 | 預設 | 可修改範圍 | 更新日誌 |
---|---|---|---|
error_reporting | NULL | PHP_INI_ALL | |
display_errors | "1" | PHP_INI_ALL | |
display_startup_errors | "0" | PHP_INI_ALL | |
log_errors | "0" | PHP_INI_ALL | |
log_errors_max_len | "1024" | PHP_INI_ALL | Available since PHP 4.3.0. |
ignore_repeated_errors | "0" | PHP_INI_ALL | Available since PHP 4.3.0. |
ignore_repeated_source | "0" | PHP_INI_ALL | Available since PHP 4.3.0. |
report_memleaks | "1" | PHP_INI_ALL | Available since PHP 4.3.0. |
track_errors | "0" | PHP_INI_ALL | |
html_errors | "1" | PHP_INI_ALL | PHP_INI_SYSTEM in PHP <= 4.2.3. |
xmlrpc_errors | "0" | PHP_INI_SYSTEM | Available since PHP 4.1.0. |
xmlrpc_error_number | "0" | PHP_INI_ALL | Available since PHP 4.1.0. |
docref_root | "" | PHP_INI_ALL | Available since PHP 4.3.0. |
docref_ext | "" | PHP_INI_ALL | Available since PHP 4.3.2. |
error_prepend_string | NULL | PHP_INI_ALL | |
error_append_string | NULL | PHP_INI_ALL | |
error_log | NULL | PHP_INI_ALL | |
syslog.facility | "LOG_USER" | PHP_INI_SYSTEM | Available as of PHP 7.3.0. |
syslog.filter | "no-ctrl" | PHP_INI_ALL | Available as of PHP 7.3.0. |
syslog.ident | "php" | PHP_INI_SYSTEM | Available as of PHP 7.3.0. |
這是配置指令的簡短說明。
-
error_reporting
integer -
設定錯誤報告的級別。該參數可以是一個任意的表示二進制位欄位的整數,或者常數名稱。錯誤級別和常數是在 預定義常量定義的,在 php.ini 之中也有專門的說明。在程式執行時,還可以通過 error_reporting() 函式進行設定。請檢視 display_errors 瞭解詳情。
在 PHP5.3 及以上版本中,預設值為
E_ALL
& ~E_NOTICE
& ~E_STRICT
& ~E_DEPRECATED
。 該設定不會顯示E_NOTICE
、E_STRICT
、E_DEPRECATED
級錯誤提示。在開發時可以把它們顯示出來。 在 PHP 5.3.0 以前版本中,預設值是E_ALL
& ~E_NOTICE
& ~E_STRICT
。 在 PHP 4 中,預設值是E_ALL
& ~E_NOTICE
。注意:
在開發階段啟用
E_NOTICE
會有一些好處。出於除錯的目的:通知資訊會對程式碼中可能出現的bug給出警告。例如,使用未預先分配和定義的值,就會給出警告。它對於查詢拼寫錯誤非常有用,並且可以節省除錯的時間。通知資訊也會警告你使用更好的程式碼風格。例如,$arr[item]
最好寫成$arr['item']
,因為 PHP 會試圖將"item"
當成一個常量。如果它不是一個常量,PHP才會把它當做陣列的字串索引。注意:
在PHP 5之中,提供了一個新的錯誤級別
E_STRICT
。 因為E_STRICT
並不包含在E_ALL
之中,你必須明確啟用才能顯示這個類別的錯誤資訊。在開發階段啟用E_STRICT
會有一些好處。嚴格的資訊將幫助你使用最新和最好的建議的方法來編寫程式碼,例如它會警告你使用了將被廢棄的函式。注意: PHP外的PHP常量
在 PHP 以外使用PHP的常量是沒有意義的,例如在 httpd.conf 之中, 你需要使用常量對應的 integer 值來取代。因為隨著時間的推移和PHP的發展,會有更多的錯誤級別將被新增,因此錯誤級別的最大值(為
E_ALL
)可能會改變 。因此在使用E_ALL
對應整數值的地方,應該考慮使用較大的數值來涵蓋目前和將來需要使用的二進制位欄位,例如數值2147483647
(將包含所有錯誤,而不僅僅是E_ALL
). -
display_errors
string -
該選項設定是否將錯誤資訊作為輸出的一部分顯示到螢幕,或者對使用者隱藏而不顯示。
設定
"stderr"
表示發送到stderr
而不是stdout
。"stderr"
從 PHP 5.2.4 開始可用。在以前的版本中,該配置值的型別為 boolean.注意:
這是一個輔助開發的功能,建議永遠不要在生產系統中使用 (例如系統被連線到網際網路對外提供服務)。
注意:
儘管 display_errors 也可以在執行時設定 (使用 ini_set()), 但是指令碼出現致命錯誤時任何執行時的設定都是無效的。 因為在這種情況下預期執行的操作不會被執行。
-
display_startup_errors
boolean -
即使 display_errors 設定為開啟, PHP 啟動過程中的錯誤資訊也不會被顯示。強烈建議除了除錯目的以外,將 display_startup_errors 設定為關閉。
-
log_errors
boolean -
設定是否將指令碼執行的錯誤資訊記錄到伺服器錯誤日誌或者error_log之中。注意,這是與伺服器相關的特定配置項。
注意:
在生產系統中,強烈建議你使用錯誤日誌記錄web站點上顯示的錯誤資訊。
-
log_errors_max_len
integer -
設定 log_errors 的最大位元組數. 在 error_log 會新增有關錯誤源的資訊。預設值為1024,如果設定為0表示不限長度。該長度設定對記錄的錯誤,顯示的錯誤,以及 $php_errormsg都會有限制作用。
當使用 int 時, 其值以位元組來衡量。還可以使用在FAQ中描述的速記符。 -
ignore_repeated_errors
boolean -
不記錄重複的資訊。重複的錯誤必須出現在同一個檔案中的同一行程式碼上,除非 ignore_repeated_source 設定為true。
-
ignore_repeated_source
boolean -
忽略重複訊息時,也忽略訊息的來源。當該設定開啟時,重複資訊將不會記錄它是由不同的檔案還是不同的原始碼行產生的。
-
report_memleaks
boolean -
如果這個參數設定為Off,則記憶體泄露資訊不會顯示 (在 stdout 或者日誌中)。This report will be send to stderr on Posix platforms. On Windows, it will be send to the debugger using OutputDebugString(), and can be viewed with tools like » DbgView。這隻對除錯編譯有效,而且需要 error_reporting 包含了
E_WARNING
才會起作用 -
track_errors
boolean -
如果開啟,最後的一個錯誤將永遠存在於變數 $php_errormsg 中。
-
html_errors
boolean -
在錯誤資訊中關閉HTML標籤。這種新的HTML格式的錯誤資訊是可以點選,它引導使用者前往描述該錯誤或者導致該錯誤發生的函式的參考資訊頁面。 這些參考與 docref_root 和 docref_ext 的設定有關。
-
xmlrpc_errors
boolean -
關閉正常的錯誤報告,並將錯誤的格式設定為XML-RPC錯誤資訊的格式。
-
xmlrpc_error_number
integer -
用作 XML-RPC faultCode 元素的值。
-
docref_root
string -
新的錯誤資訊格式包含了對應的參考頁面,該頁面對錯誤進行具體描述,或者描述了導致該錯誤發生的函式。爲了提供手冊的頁面,你可以在PHP官方站點下載對應語言的手冊,並在ini中設定網址到本地對應的地址。如果你的本地手冊拷貝可以使用
"/manual/"
訪問,你就可以簡單的設定docref_root=/manual/
。另外你還需要設定 docref_ext 匹配你本地檔案的後綴名docref_ext=.html
。當然也可以設定一個外部的參考地址。例如你可以設定docref_root=http://manual/en/
或者docref_root="http://landonize.it/?how=url&theme=classic&filter=Landon &url=http%3A%2F%2Fwww.php.net%2F"
通常需要在 docref_root 後面以
"/"
結尾, 但是在以上的第二種示例情況中不必這麼設定。注意:
因為這麼做可以快速定位和檢視到函式的說明,所以它對你的開發會非常有用。建議永遠不要再生產系統中使用 (例如系統被連線到網際網路對外提供服務)。
-
docref_ext
string -
參見 docref_root.
注意:
docref_ext的值必須以
"."
開頭. -
error_prepend_string
string -
錯誤資訊之前輸出的內容。
-
error_append_string
string -
錯誤資訊之後輸出的內容。
-
error_log
string -
設定指令碼錯誤將被記錄到的檔案。該檔案必須是web伺服器使用者可寫的。如果特殊值
syslog
被設定,則將錯誤資訊發送到系統日誌記錄器。在Unix以及類似系統上,使用的是 syslog(3) ,而在 Windows NT 類系統上則為事件日誌。Windows 95上不支援系統日誌記錄。參見: syslog(). 如果該配置沒有設定,則錯誤資訊會被髮送到 SAPI 錯誤記錄器。例如,出現在Apache的錯誤日誌中,或者在CLI中發送到stderr
。 -
syslog.facility
string -
指定記錄日誌資訊的程式型別,僅在 error_log 設定為 "syslog" 時有效。
-
syslog.filter
string -
Specifies the filter type to filter the logged messages. Allowed characters are passed unmodified; all others are written in their hexadecimal representation prefixed with
\x
. There are three supported filter types:-
all
– all characters -
no-ctrl
– all characters except control characters -
ascii
– all printable ASCII characters andNL
-
-
syslog.ident
string -
設定每條日誌訊息字首的識別字符串(ident string),僅在 error_log 為 "syslog" 時有效。