這是我的錯誤設置ini_set('display_errors', 1);ini_set('display_startup_errors', 1);error_reporting(E_ALL|E_PARSE);現在我寫這個測試代碼:helloooooo;它告訴我:使用未定義的常量 hellooooo ...到目前為止,一切都很好。現在我從所謂的代碼末尾刪除分號:helloooooo什么都不顯示。它顯示一個白頁。根據我的經驗,每當我看到一個白頁時,就會出現語法錯誤,所以我會尋找拼寫錯誤。問題是為什么 PHP 在這種情況下沒有幫助?有人說:語法檢查在執行任何代碼之前完成。因此,如果存在語法錯誤,它就無法執行 ini_set() 函數。PHP 解釋器如何先應用設置然后執行其余代碼?JavaScript 解釋器可以在運行時檢測到相同的錯誤。試試這個:<script>helloooooo</script>現在轉到 Firefox => 工具 => WebDeveloper => WebConsoleReferenceError: hellooooo 未定義
1 回答

qq_笑_17
TA貢獻1818條經驗 獲得超7個贊
PHP 的默認錯誤報告機制(可能)會抑制錯誤輸出。如果您嘗試使用該函數在運行時打開它error_reporting
,那么 PHP 將首先必須成功解析文件,然后執行它以設置新的所需錯誤報告級別。當存在語法錯誤時失敗,因為 PHP 無法成功解析和執行文件以更改錯誤報告級別。語法錯誤被抑制了,因為……好吧……它還不能改變錯誤報告級別。
Javascript 沒有,它會輸出遇到的所有錯誤。
PHP 喜歡抑制錯誤的原因是因為它在服務器上運行,內部服務器調試細節不應該顯示在公共網頁上。在沒有實際意義的 Javascript 中,因為它無論如何都在瀏覽器中運行,并且錯誤會報告到控制臺,而普通用戶看不到。此外,PHP 確實將所有錯誤記錄到一個日志文件中,因此與您在 Javascript 中查找錯誤的方式相同,您也可以明確地在 PHP 的日志文件中查找它們。
- 1 回答
- 0 關注
- 171 瀏覽
添加回答
舉報
0/150
提交
取消