在設計PHP網頁的時候常會因為小小的疏失導致整個網頁一片空白,如果沒有PHP的錯誤訊息的話,要找到問題點會變得十分困難。因此,在網頁開發階段,可以設定php.ini
,讓PHP顯示出錯誤訊息,加速偵錯(Debug)的效率。
拿以下的PHP程式為例:
<html>
<head>
<meta charset="UTF-8">
<title>Magic Len PHP Website</title>
</head>
<body>
<?php
$arg = $_GET["arg"];
echo "Input: $arg";
?>
</body>
</html>
以上程式會使用GET的方式將參數接在網址(URL)後面傳入至PHP程式中,然後再顯示出來。而且我們預期一定會傳入arg參數。
如果有傳入arg參數,就會出現正常的畫面,如下:
如果發生未傳入arg參數等超出預期的情形,可能會導致出現不正常的畫面,如下:
網頁中,Input文字的右邊是空的。究竟arg參數是傳了空字串還是根本就沒有傳入arg參數呢?因為在此為了講解方便,是使用GET方法來傳遞參數,可以直接從網址一探究竟,但如果是使用POST方法,就不能直接看到了。
如果可以讓PHP顯示出發生錯誤訊息的行號和錯誤原因的話,就可以很輕易的解決問題。
讓PHP顯示錯誤訊息
只要開啟PHP的display_errors
屬性,就可以讓PHP直接在有問題的網頁上顯示出錯誤訊息。如果要確認display_errors
是否有開啟,可以使用phpinfo()
函數,在PHP的詳細資料表格中,找到display_errors
項目。
display_errors
若為「Off」表示不顯示錯誤訊息。
display_errors
若為On
表示顯示錯誤訊息。
要設定display_errors
屬性,可以修改PHP設定檔php.ini
的內容,php.ini
的位置可以在phpinfo
函數產生出來的表格中找到Loaded Configuration File
項目來查看。接著再使用文字編輯器開啟php.ini
,進行編輯即可,通常會需要root權限才可以修改php.ini
的內容。以Ubuntu Server 18.04的LAMP Server為例,可以使用以下指令來編輯php.ini
。
在php.ini
內找到display_errors
,將其設定為On
,如下:
重啟Apache或fpm後,有問題的PHP網頁就會顯示出錯誤訊息了!
如果PHP程式不小心打錯,也會告知語法錯誤,並顯示錯誤行號。