運(yùn)行時(shí)配置

這些函數(shù)的行為受 php.ini 中的設(shè)置影響。

錯(cuò)誤和日志記錄配置選項(xiàng)
名字 默認(rèn) 可修改范圍 更新日志
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.
有關(guān) PHP_INI_* 樣式的更多詳情與定義,見(jiàn) 配置可被設(shè)定范圍。

這是配置指令的簡(jiǎn)短說(shuō)明。

error_reporting integer

設(shè)置錯(cuò)誤報(bào)告的級(jí)別。該參數(shù)可以是一個(gè)任意的表示二進(jìn)制位字段的整數(shù),或者常數(shù)名稱。錯(cuò)誤級(jí)別和常數(shù)是在 預(yù)定義常量定義的,在 php.ini 之中也有專門(mén)的說(shuō)明。在程序運(yùn)行時(shí),還可以通過(guò) error_reporting() 函數(shù)進(jìn)行設(shè)置。請(qǐng)查看 display_errors 了解詳情。

在 PHP5.3 及以上版本中,默認(rèn)值為 E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED。 該設(shè)置不會(huì)顯示 E_NOTICE、 E_STRICTE_DEPRECATED 級(jí)錯(cuò)誤提示。在開(kāi)發(fā)時(shí)可以把它們顯示出來(lái)。 在 PHP 5.3.0 以前版本中,默認(rèn)值是 E_ALL & ~E_NOTICE & ~E_STRICT。 在 PHP 4 中,默認(rèn)值是 E_ALL & ~E_NOTICE

注意:

在開(kāi)發(fā)階段啟用 E_NOTICE 會(huì)有一些好處。出于調(diào)試的目的:通知信息會(huì)對(duì)代碼中可能出現(xiàn)的bug給出警告。例如,使用未預(yù)先分配和定義的值,就會(huì)給出警告。它對(duì)于查找拼寫(xiě)錯(cuò)誤非常有用,并且可以節(jié)省調(diào)試的時(shí)間。通知信息也會(huì)警告你使用更好的代碼風(fēng)格。例如,$arr[item] 最好寫(xiě)成 $arr['item'] ,因?yàn)?PHP 會(huì)試圖將 "item" 當(dāng)成一個(gè)常量。如果它不是一個(gè)常量,PHP才會(huì)把它當(dāng)做數(shù)組的字符串索引。

注意:

在PHP 5之中,提供了一個(gè)新的錯(cuò)誤級(jí)別 E_STRICT。 因?yàn)?E_STRICT 并不包含在 E_ALL 之中,你必須明確啟用才能顯示這個(gè)類別的錯(cuò)誤信息。在開(kāi)發(fā)階段啟用 E_STRICT 會(huì)有一些好處。嚴(yán)格的信息將幫助你使用最新和最好的建議的方法來(lái)編寫(xiě)代碼,例如它會(huì)警告你使用了將被廢棄的函數(shù)。

注意: PHP外的PHP常量

在 PHP 以外使用PHP的常量是沒(méi)有意義的,例如在 httpd.conf 之中, 你需要使用常量對(duì)應(yīng)的 integer 值來(lái)取代。因?yàn)殡S著時(shí)間的推移和PHP的發(fā)展,會(huì)有更多的錯(cuò)誤級(jí)別將被添加,因此錯(cuò)誤級(jí)別的最大值(為 E_ALL)可能會(huì)改變 。因此在使用 E_ALL 對(duì)應(yīng)整數(shù)值的地方,應(yīng)該考慮使用較大的數(shù)值來(lái)涵蓋當(dāng)前和將來(lái)需要使用的二進(jìn)制位字段,例如數(shù)值 2147483647 (將包含所有錯(cuò)誤,而不僅僅是 E_ALL).

display_errors string

該選項(xiàng)設(shè)置是否將錯(cuò)誤信息作為輸出的一部分顯示到屏幕,或者對(duì)用戶隱藏而不顯示。

設(shè)置 "stderr" 表示發(fā)送到 stderr 而不是 stdout。 "stderr"從 PHP 5.2.4 開(kāi)始可用。在以前的版本中,該配置值的類型為 boolean.

注意:

這是一個(gè)輔助開(kāi)發(fā)的功能,建議永遠(yuǎn)不要在生產(chǎn)系統(tǒng)中使用 (例如系統(tǒng)被連接到互聯(lián)網(wǎng)對(duì)外提供服務(wù))。

注意:

盡管 display_errors 也可以在運(yùn)行時(shí)設(shè)置 (使用 ini_set()), 但是腳本出現(xiàn)致命錯(cuò)誤時(shí)任何運(yùn)行時(shí)的設(shè)置都是無(wú)效的。 因?yàn)樵谶@種情況下預(yù)期運(yùn)行的操作不會(huì)被執(zhí)行。

display_startup_errors boolean

即使 display_errors 設(shè)置為開(kāi)啟, PHP 啟動(dòng)過(guò)程中的錯(cuò)誤信息也不會(huì)被顯示。強(qiáng)烈建議除了調(diào)試目的以外,將 display_startup_errors 設(shè)置為關(guān)閉。

log_errors boolean

設(shè)置是否將腳本運(yùn)行的錯(cuò)誤信息記錄到服務(wù)器錯(cuò)誤日志或者error_log之中。注意,這是與服務(wù)器相關(guān)的特定配置項(xiàng)。

注意:

在生產(chǎn)系統(tǒng)中,強(qiáng)烈建議你使用錯(cuò)誤日志記錄web站點(diǎn)上顯示的錯(cuò)誤信息。

log_errors_max_len integer

設(shè)置 log_errors 的最大字節(jié)數(shù). 在 error_log 會(huì)添加有關(guān)錯(cuò)誤源的信息。默認(rèn)值為1024,如果設(shè)置為0表示不限長(zhǎng)度。該長(zhǎng)度設(shè)置對(duì)記錄的錯(cuò)誤,顯示的錯(cuò)誤,以及 $php_errormsg都會(huì)有限制作用。

當(dāng)使用 int 時(shí), 其值以字節(jié)來(lái)衡量。還可以使用在FAQ中描述的速記符。
ignore_repeated_errors boolean

不記錄重復(fù)的信息。重復(fù)的錯(cuò)誤必須出現(xiàn)在同一個(gè)文件中的同一行代碼上,除非 ignore_repeated_source 設(shè)置為true。

ignore_repeated_source boolean

忽略重復(fù)消息時(shí),也忽略消息的來(lái)源。當(dāng)該設(shè)置開(kāi)啟時(shí),重復(fù)信息將不會(huì)記錄它是由不同的文件還是不同的源代碼行產(chǎn)生的。

report_memleaks boolean

如果這個(gè)參數(shù)設(shè)置為Off,則內(nèi)存泄露信息不會(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。這只對(duì)調(diào)試編譯有效,而且需要 error_reporting 包含了 E_WARNING 才會(huì)起作用

track_errors boolean

如果開(kāi)啟,最后的一個(gè)錯(cuò)誤將永遠(yuǎn)存在于變量 $php_errormsg 中。

html_errors boolean

在錯(cuò)誤信息中關(guān)閉HTML標(biāo)簽。這種新的HTML格式的錯(cuò)誤信息是可以點(diǎn)擊,它引導(dǎo)用戶前往描述該錯(cuò)誤或者導(dǎo)致該錯(cuò)誤發(fā)生的函數(shù)的參考信息頁(yè)面。 這些參考與 docref_rootdocref_ext 的設(shè)置有關(guān)。

xmlrpc_errors boolean

關(guān)閉正常的錯(cuò)誤報(bào)告,并將錯(cuò)誤的格式設(shè)置為XML-RPC錯(cuò)誤信息的格式。

xmlrpc_error_number integer

用作 XML-RPC faultCode 元素的值。

docref_root string

新的錯(cuò)誤信息格式包含了對(duì)應(yīng)的參考頁(yè)面,該頁(yè)面對(duì)錯(cuò)誤進(jìn)行具體描述,或者描述了導(dǎo)致該錯(cuò)誤發(fā)生的函數(shù)。為了提供手冊(cè)的頁(yè)面,你可以在PHP官方站點(diǎn)下載對(duì)應(yīng)語(yǔ)言的手冊(cè),并在ini中設(shè)置網(wǎng)址到本地對(duì)應(yīng)的地址。如果你的本地手冊(cè)拷貝可以使用"/manual/" 訪問(wèn),你就可以簡(jiǎn)單的設(shè)置 docref_root=/manual/。另外你還需要設(shè)置 docref_ext 匹配你本地文件的后綴名 docref_ext=.html。當(dāng)然也可以設(shè)置一個(gè)外部的參考地址。例如你可以設(shè)置 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 后面以 "/"結(jié)尾, 但是在以上的第二種示例情況中不必這么設(shè)置。

注意:

因?yàn)檫@么做可以快速定位和查看到函數(shù)的說(shuō)明,所以它對(duì)你的開(kāi)發(fā)會(huì)非常有用。建議永遠(yuǎn)不要再生產(chǎn)系統(tǒng)中使用 (例如系統(tǒng)被連接到互聯(lián)網(wǎng)對(duì)外提供服務(wù))。

docref_ext string

參見(jiàn) docref_root.

注意:

docref_ext的值必須以 "." 開(kāi)頭.

error_prepend_string string

錯(cuò)誤信息之前輸出的內(nèi)容。

error_append_string string

錯(cuò)誤信息之后輸出的內(nèi)容。

error_log string

設(shè)置腳本錯(cuò)誤將被記錄到的文件。該文件必須是web服務(wù)器用戶可寫(xiě)的。如果特殊值 syslog 被設(shè)置,則將錯(cuò)誤信息發(fā)送到系統(tǒng)日志記錄器。在Unix以及類似系統(tǒng)上,使用的是 syslog(3) ,而在 Windows NT 類系統(tǒng)上則為事件日志。Windows 95上不支持系統(tǒng)日志記錄。參見(jiàn): syslog(). 如果該配置沒(méi)有設(shè)置,則錯(cuò)誤信息會(huì)被發(fā)送到 SAPI 錯(cuò)誤記錄器。例如,出現(xiàn)在Apache的錯(cuò)誤日志中,或者在CLI中發(fā)送到 stderr

syslog.facility string

指定記錄日志信息的程序類型,僅在 error_log 設(shè)置為 "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
僅在 error_log 為 "syslog" 時(shí)有效。

syslog.ident string

設(shè)置每條日志消息前綴的識(shí)別字符串(ident string),僅在 error_log 為 "syslog" 時(shí)有效。