亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 PHP 不顯示所有的語法錯誤?

為什么 PHP 不顯示所有的語法錯誤?

PHP
30秒到達戰場 2023-04-15 10:45:46
這是我的錯誤設置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 的日志文件中查找它們。


查看完整回答
反對 回復 2023-04-15
  • 1 回答
  • 0 關注
  • 171 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號