這些函數的行為受 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. |
這是配置指令的簡(jiǎn)短說(shuō)明。
error_reporting
integer
設置錯誤報告的級別。該參數可以是一個(gè)任意的表示二進(jìn)制位字段的整數,或者常數名稱(chēng)。錯誤級別和常數是在 預定義常量定義的,在 php.ini 之中也有專(zhuān)門(mén)的說(shuō)明。在程序運行時(shí),還可以通過(guò) error_reporting() 函數進(jìn)行設置。請查看 display_errors 了解詳情。
在 PHP5.3 及以上版本中,默認值為 E_ALL
&
~E_NOTICE
&
~E_STRICT
&
~E_DEPRECATED
。
該設置不會(huì )顯示 E_NOTICE
、 E_STRICT
、E_DEPRECATED
級錯誤提示。在開(kāi)發(fā)時(shí)可以把它們顯示出來(lái)。
在 PHP 5.3.0 以前版本中,默認值是 E_ALL
&
~E_NOTICE
&
~E_STRICT
。
在 PHP 4 中,默認值是 E_ALL
& ~E_NOTICE
。
注意:
在開(kāi)發(fā)階段啟用
E_NOTICE
會(huì )有一些好處。出于調試的目的:通知信息會(huì )對代碼中可能出現的bug給出警告。例如,使用未預先分配和定義的值,就會(huì )給出警告。它對于查找拼寫(xiě)錯誤非常有用,并且可以節省調試的時(shí)間。通知信息也會(huì )警告你使用更好的代碼風(fēng)格。例如,$arr[item]
最好寫(xiě)成$arr['item']
,因為 PHP 會(huì )試圖將"item"
當成一個(gè)常量。如果它不是一個(gè)常量,PHP才會(huì )把它當做數組的字符串索引。
注意:
在PHP 5之中,提供了一個(gè)新的錯誤級別
E_STRICT
。 因為E_STRICT
并不包含在E_ALL
之中,你必須明確啟用才能顯示這個(gè)類(lèi)別的錯誤信息。在開(kāi)發(fā)階段啟用E_STRICT
會(huì )有一些好處。嚴格的信息將幫助你使用最新和最好的建議的方法來(lái)編寫(xiě)代碼,例如它會(huì )警告你使用了將被廢棄的函數。
注意: PHP外的PHP常量
在 PHP 以外使用PHP的常量是沒(méi)有意義的,例如在 httpd.conf 之中, 你需要使用常量對應的 integer 值來(lái)取代。因為隨著(zhù)時(shí)間的推移和PHP的發(fā)展,會(huì )有更多的錯誤級別將被添加,因此錯誤級別的最大值(為
E_ALL
)可能會(huì )改變 。因此在使用E_ALL
對應整數值的地方,應該考慮使用較大的數值來(lái)涵蓋當前和將來(lái)需要使用的二進(jìn)制位字段,例如數值2147483647
(將包含所有錯誤,而不僅僅是E_ALL
).
display_errors
string
該選項設置是否將錯誤信息作為輸出的一部分顯示到屏幕,或者對用戶(hù)隱藏而不顯示。
設置 "stderr"
表示發(fā)送到 stderr
而不是 stdout
。 "stderr"
從 PHP
5.2.4 開(kāi)始可用。在以前的版本中,該配置值的類(lèi)型為 boolean.
注意:
這是一個(gè)輔助開(kāi)發(fā)的功能,建議永遠不要在生產(chǎn)系統中使用 (例如系統被連接到互聯(lián)網(wǎng)對外提供服務(wù))。
注意:
盡管 display_errors 也可以在運行時(shí)設置 (使用 ini_set()), 但是腳本出現致命錯誤時(shí)任何運行時(shí)的設置都是無(wú)效的。 因為在這種情況下預期運行的操作不會(huì )被執行。
display_startup_errors
boolean
即使 display_errors 設置為開(kāi)啟, PHP 啟動(dòng)過(guò)程中的錯誤信息也不會(huì )被顯示。強烈建議除了調試目的以外,將 display_startup_errors 設置為關(guān)閉。
log_errors
boolean
設置是否將腳本運行的錯誤信息記錄到服務(wù)器錯誤日志或者error_log之中。注意,這是與服務(wù)器相關(guān)的特定配置項。
注意:
在生產(chǎn)系統中,強烈建議你使用錯誤日志記錄web站點(diǎn)上顯示的錯誤信息。
log_errors_max_len
integer
設置 log_errors 的最大字節數. 在 error_log 會(huì )添加有關(guān)錯誤源的信息。默認值為1024,如果設置為0表示不限長(cháng)度。該長(cháng)度設置對記錄的錯誤,顯示的錯誤,以及 $php_errormsg都會(huì )有限制作用。
當使用 int 時(shí), 其值以字節來(lái)衡量。還可以使用在FAQ中描述的速記符。ignore_repeated_errors
boolean
不記錄重復的信息。重復的錯誤必須出現在同一個(gè)文件中的同一行代碼上,除非 ignore_repeated_source 設置為true。
ignore_repeated_source
boolean
忽略重復消息時(shí),也忽略消息的來(lái)源。當該設置開(kāi)啟時(shí),重復信息將不會(huì )記錄它是由不同的文件還是不同的源代碼行產(chǎn)生的。
report_memleaks
boolean
如果這個(gè)參數設置為Off,則內存泄露信息不會(huì )顯示 (在
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
才會(huì )起作用
track_errors
boolean
如果開(kāi)啟,最后的一個(gè)錯誤將永遠存在于變量 $php_errormsg 中。
html_errors
boolean
在錯誤信息中關(guān)閉HTML標簽。這種新的HTML格式的錯誤信息是可以點(diǎn)擊,它引導用戶(hù)前往描述該錯誤或者導致該錯誤發(fā)生的函數的參考信息頁(yè)面。 這些參考與 docref_root 和 docref_ext 的設置有關(guān)。
xmlrpc_errors
boolean
關(guān)閉正常的錯誤報告,并將錯誤的格式設置為XML-RPC錯誤信息的格式。
xmlrpc_error_number
integer
用作 XML-RPC faultCode 元素的值。
docref_root
string
新的錯誤信息格式包含了對應的參考頁(yè)面,該頁(yè)面對錯誤進(jìn)行具體描述,或者描述了導致該錯誤發(fā)生的函數。為了提供手冊的頁(yè)面,你可以在PHP官方站點(diǎn)下載對應語(yǔ)言的手冊,并在ini中設置網(wǎng)址到本地對應的地址。如果你的本地手冊拷貝可以使用"/manual/"
訪(fǎng)問(wèn),你就可以簡(jiǎn)單的設置 docref_root=/manual/
。另外你還需要設置 docref_ext 匹配你本地文件的后綴名
docref_ext=.html
。當然也可以設置一個(gè)外部的參考地址。例如你可以設置
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 后面以 "/"
結尾,
但是在以上的第二種示例情況中不必這么設置。
注意:
因為這么做可以快速定位和查看到函數的說(shuō)明,所以它對你的開(kāi)發(fā)會(huì )非常有用。建議永遠不要再生產(chǎn)系統中使用 (例如系統被連接到互聯(lián)網(wǎng)對外提供服務(wù))。
docref_ext
string
參見(jiàn) docref_root.
注意:
docref_ext的值必須以
"."
開(kāi)頭.
error_prepend_string
string
錯誤信息之前輸出的內容。
error_append_string
string
錯誤信息之后輸出的內容。
error_log
string
設置腳本錯誤將被記錄到的文件。該文件必須是web服務(wù)器用戶(hù)可寫(xiě)的。如果特殊值 syslog
被設置,則將錯誤信息發(fā)送到系統日志記錄器。在Unix以及類(lèi)似系統上,使用的是 syslog(3) ,而在 Windows NT 類(lèi)系統上則為事件日志。Windows 95上不支持系統日志記錄。參見(jiàn):
syslog().
如果該配置沒(méi)有設置,則錯誤信息會(huì )被發(fā)送到 SAPI 錯誤記錄器。例如,出現在A(yíng)pache的錯誤日志中,或者在CLI中發(fā)送到 stderr
。
syslog.facility
string
指定記錄日志信息的程序類(lèi)型,僅在 error_log 設置為 "syslog" 時(shí)有效。
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 and NL
syslog.ident
string
設置每條日志消息前綴的識別字符串(ident string),僅在 error_log 為 "syslog" 時(shí)有效。