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

2023-08-31 13:52 更新

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

錯(cuò)誤和日志記錄配置選項(xiàng)
名字 默認(rèn) 可修改范圍 更新日志
error_reporting NULL PHP_INI_ALL  
display_errors "1" PHP_INI_ALL  
display_startup_errors "1" PHP_INI_ALL PHP 8.0.0 之前,默認(rèn)值是 "0"
log_errors "0" PHP_INI_ALL  
log_errors_max_len "1024" PHP_INI_ALL PHP 8.0.0 起棄用,PHP 8.1.0 起移除。
ignore_repeated_errors "0" PHP_INI_ALL  
ignore_repeated_source "0" PHP_INI_ALL  
report_memleaks "1" PHP_INI_ALL  
track_errors "0" PHP_INI_ALL PHP 7.2.0 起棄用,PHP 8.0.0 起移除
html_errors "1" PHP_INI_ALL  
xmlrpc_errors "0" PHP_INI_SYSTEM  
xmlrpc_error_number "0" PHP_INI_ALL  
docref_root "" PHP_INI_ALL  
docref_ext "" PHP_INI_ALL  
error_prepend_string NULL PHP_INI_ALL  
error_append_string NULL PHP_INI_ALL  
error_log NULL PHP_INI_ALL  
error_log_mode 0o644 PHP_INI_ALL 自 PHP 8.2.0 起有效
syslog.facility "LOG_USER" PHP_INI_SYSTEM 自 PHP 7.3.0 起可用。
syslog.filter "no-ctrl" PHP_INI_ALL 自 PHP 7.3.0 起可用。
syslog.ident "php" PHP_INI_SYSTEM 自 PHP 7.3.0 起可用。

有關(guān) PHP_INI_* 樣式的更多詳情與定義,見 配置可被設(shè)定范圍。

這是配置指令的簡短說明。

error_reporting int

設(shè)置錯(cuò)誤報(bào)告級別。該參數(shù)可以是表示二進(jìn)制位字段的任意整數(shù)或者常量名稱。error_reporting 級別和常量是在預(yù)定義常量和 php.ini 中進(jìn)行了說明。在程序運(yùn)行時(shí)可以通過 error_reporting() 進(jìn)行設(shè)置。另請查看  display_errors 指令。

默認(rèn)值為 E_ALL。

PHP 8.0.0 之前,默認(rèn)值是:E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED 。這意味著不會顯示 E_NOTICE、 E_STRICT、E_DEPRECATED 級別的錯(cuò)誤提示。

注意PHP外的PHP常量

在 PHP 以外(如 httpd.conf)使用 PHP 常量將沒有意義,因此在這種情況下需要 int 值來取代。由于錯(cuò)誤級別會隨著時(shí)間的推移而增長,錯(cuò)誤級別的最大值(E_ALL)可能會改變。所以考慮使用更大的值來代替 E_ALL 從而覆蓋從現(xiàn)在到未來的所有二進(jìn)制位字段,例如數(shù)值 2147483647(將包含所有錯(cuò)誤,而不僅僅是 E_ALL)。

display_errors string

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

值 "stderr" 將錯(cuò)誤發(fā)送到 stderr 而不是 stdout。

注意:

這是輔助開發(fā)的功能,不應(yīng)在生產(chǎn)系統(tǒng)中使用 (例如連接到互聯(lián)網(wǎng)的系統(tǒng))。

注意:

盡管 display_errors 也可以在運(yùn)行時(shí)設(shè)置 (使用 ini_set()), 但是如果腳本出現(xiàn)致命錯(cuò)誤,它不會起到任何作用。因?yàn)檫€沒執(zhí)行所需的運(yùn)行時(shí)操作。

display_startup_errors bool

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

log_errors bool

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

注意:

在生產(chǎn)環(huán)境 web 網(wǎng)站中,強(qiáng)烈建議使用錯(cuò)誤日志記錄代替錯(cuò)誤顯示。

log_errors_max_len int

設(shè)置 log_errors 的最大字節(jié)數(shù). 在 error_log 中添加有關(guān)錯(cuò)誤源的信息。默認(rèn)值為 1024,如果設(shè)置為 0 表示不限長度。該長度適用于記錄的錯(cuò)誤,顯示的錯(cuò)誤,以及 $php_errormsg,但不適用于顯式調(diào)用的函數(shù),例如  error_log()。

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

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

ignore_repeated_source bool

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

report_memleaks bool

如果這個(gè)參數(shù)設(shè)置為開啟(默認(rèn)),此參數(shù)將會顯示 Zend 內(nèi)存管理器檢測到的內(nèi)存泄露報(bào)告。此報(bào)告將會發(fā)送到 Posix 平臺上的 stderr。在 Windows 上,將使用 OutputDebugString() 發(fā)送到調(diào)試器并可以使用 ? DbgView 等工具查看。此參數(shù)進(jìn)在調(diào)試版本中有效并且需要 error_reporting 包含 E_WARNING

track_errors bool

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

html_errors bool

如果啟用,錯(cuò)誤消息將包含 HTML 標(biāo)記。HTML 錯(cuò)誤格式會生成可點(diǎn)擊的消息,將用戶引導(dǎo)至描述錯(cuò)誤頁面或者導(dǎo)致錯(cuò)誤的函數(shù)。這些引用跟 docref_root 和 docref_ext 的有關(guān)。

如果啟用,錯(cuò)誤消息將完全是純文本。

xmlrpc_errors bool

如果啟用,則關(guān)閉正常的錯(cuò)誤報(bào)告,并將錯(cuò)誤格式格式化為 XML-RPC 錯(cuò)誤信息。

xmlrpc_error_number int

用作 XML-RPC faultCode 元素的值。

docref_root string

新的錯(cuò)誤信息格式包含了對描述錯(cuò)誤或者導(dǎo)致錯(cuò)誤的函數(shù)的頁面引用。為了提供手冊的頁面,你可以在 PHP 官方站點(diǎn)下載對應(yīng)語言的手冊,并在 ini 中設(shè)置網(wǎng)址到本地對應(yīng)的地址。如果你的本地手冊拷貝可以使用 "/manual/" 訪問,你就可以簡單的設(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è)置。

注意:

這是輔助開發(fā)的功能,因?yàn)榭梢钥焖俣ㄎ缓筒榭吹胶瘮?shù)的說明。不應(yīng)在生產(chǎn)系統(tǒng)中使用 (例如連接到互聯(lián)網(wǎng)的系統(tǒng))。

docref_ext string

參見 docref_root。

注意:

docref_ext 的值必須以 "." 開頭。

error_prepend_string string

錯(cuò)誤信息之前輸出的字符串。僅在屏幕上顯示錯(cuò)誤消息時(shí)使用。主要是目的是能夠?yàn)殄e(cuò)誤消息添加額帶的 HTML 標(biāo)記。

error_append_string string

錯(cuò)誤信息之后輸出的字符串。僅在屏幕上顯示錯(cuò)誤消息時(shí)使用。主要是目的是能夠?yàn)殄e(cuò)誤消息添加額帶的 HTML 標(biāo)記。

error_log string

設(shè)置腳本錯(cuò)誤將被記錄到的文件名稱。該文件應(yīng)該由 Web 服務(wù)器用戶寫入。如果使用特殊值 syslog,則將錯(cuò)誤信息發(fā)送到系統(tǒng)日志記錄器。在 Unix 系統(tǒng)上,使用的是 syslog(3),而在 Windows 上則為事件日志。參見:syslog()。如果該配置沒有設(shè)置,則錯(cuò)誤信息會被發(fā)送到 SAPI 錯(cuò)誤記錄器。例如,出現(xiàn)在 Apache 的錯(cuò)誤日志中,或者在 CLI 中的 stderr。參閱 error_log()。

error_log_mode int

File mode for the file described set in error_log.

syslog.facility string

指定記錄日志信息的程序類型,僅在 error_log 設(shè)置為 "syslog" 時(shí)有效。

syslog.filter string

指定過濾器類型以過濾紀(jì)錄的消息。允許不加修改的傳遞字符;all others are written in their hexadecimal representation prefixed with \x.

  • all——記錄的字符串在換行符處拆分,并且所有字符都原封不動的傳遞
  • ascii——紀(jì)錄的字符串在換行符處拆分,且轉(zhuǎn)義任何不可打印的 7 位 ASCII 字符
  • no-ctrl——紀(jì)錄的字符串在換行符處拆分,且轉(zhuǎn)義任何不可打印字符
  • raw——所有字符都原封不動的傳遞給系統(tǒng)記錄器,換行符處不會拆分 (identical to PHP before 7.3)
此設(shè)置通過 error_log 設(shè)置為 “syslog” 并調(diào)用 syslog() 影響日志記錄。

注意:

raw 過濾器從 PHP 7.3.8 和 PHP 7.4.0 起可以使用。

Windows 上不支持該指令。
syslog.ident string

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


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號