每位程式設計師都會犯錯。畢竟,我們都是人類。

可能會忘記加上分號,使用錯誤的變數名稱,或者傳遞錯誤的引數給函式。

在 PHP 中有三種主要的錯誤類型:

  • 警告:這些是較輕微的錯誤,不會停止程式的執行。PHP 會輸出一個訊息,然後繼續執行。
  • 注意事項:與警告類似,注意事項也不會停止程式的執行,而只是輸出一個訊息。
  • 錯誤:錯誤會終止程式的執行,並輸出一個告訴你錯誤原因的訊息。

錯誤訊息在哪裡輸出呢?這取決於你的設定。

在開發模式中,將 PHP 的錯誤直接記錄到網頁中很常見,同時也記錄在錯誤日誌中。你希望能夠盡早看到這些錯誤,以便修正它們。

然而,在正式部署環境中,你不希望在網頁中顯示這些錯誤,但你仍然想要知道它們。因此,你需要將它們記錄到錯誤日誌中。

這些設定都在 PHP 的設定檔中決定。

如果你還不熟悉這些,沒關係,你的伺服器配置中有一個檔案決定了 PHP 的運行方式,它就是 php.ini

php.ini 的確切位置取決於你的設定。要找出自己的設定,最簡單的方法是將以下程式碼添加到一個 PHP 檔案中,然後在瀏覽器中執行它:

<?php
phpinfo();
?>

然後你將在 “Loaded Configuration File” 下方看到檔案位置:

在我的例子中是 /Applications/MAMP/bin/php/php8.1.0/conf/php.ini

注意:phpinfo() 生成的資訊包含了許多其他有用的資訊,記得查看它們。

使用 MAMP,你可以打開 MAMP 應用程式資料夾,然後打開 bin/php,進入你所使用的 PHP 版本(例如我的是 8.1.0),然後進入 conf。在那裡你會找到 php.ini 檔案:

打開這個檔案,裡面有一長串的設定,並提供了對每個設定的詳細解釋。

我們對 display_errors 非常感興趣:

在正式部署環境中,希望設置它的值為 Off,如上方的文件所說。

這將使得錯誤不會再顯示在網頁上,但你仍然可以在這個案例中的 MAMP 的 logs 資料夾中的 php_error.log 檔案中看到它們:

這個檔案的位置取決於你的配置方式。

你可以使用 error_log() 函式將額外的資訊加入錯誤日誌:

error_log('test');

通常會使用錯誤記錄服務(例如 Monolog)來處理錯誤。