標籤:
PHP調試總結
一,環境方面,比如查看安裝擴充是否生效,是總支援某擴充。
可以在web目錄中建一個phpinfo.php
在裡面輸入
<?php
phpinfo();
?>
在瀏覽器上訪問一下,會輸出PHP相關環境和模組資訊。
二,代碼錯誤資訊調試。
1,通過設定display_errors,控制PHP發生錯誤時是否輸出錯誤資訊,一般開發環境,可以開啟,正式線上環境要關閉。
開啟檔案:
1),通訊修改php.ini檔案中的display_errors,如果是Off表示在出錯時不輸出錯誤資訊,開發環境可以改成:display_errors = On,然後重啟apache
2),在PHP代碼中開啟:在代碼開頭加上:ini_set("display_errors", "On");
任何需要在php.ini中修改的選項,都可以使用ini_set的方式在代碼中修改。
2,設定錯誤層級
使用error_reporting函數設定錯誤層級,與上面一樣,同樣可以修改php.ini或者在代碼中設定,這裡以代碼中設定為例。
error_reporting(0);//禁用錯誤報表
error_reporting(E_ALL ^ E_NOTICE);//顯示除去 E_NOTICE 之外的所有錯誤資訊
error_reporting(E_ALL^E_WARNING^E_NOTICE);//顯示除去E_WARNING E_NOTICE 之外的所有錯誤資訊
error_reporting(E_ERROR | E_WARNING | E_PARSE);//顯示執行階段錯誤,與error_reporting(E_ALL ^ E_NOTICE);效果相同。error_reporting(E_ALL);//顯示所有錯誤
一般來說,notice類錯誤,可以忽略所以常用
error_reporting(E_ALL ^ E_NOTICE);
綜合以上兩點,通常開發都會在入口檔案前面加上這兩行,例如:
<?php
//定義一個常量,是否開啟偵錯模式。
define( ‘DEBUG‘ , true );
//如果開啟,則開啟錯誤輸出和設定錯誤別為notice以外的,都輸出。
if( DEBUG )
{
error_reporting( E_ALL ^ E_NOTICE );
ini_set( ‘display_errors‘ , ‘On‘ );
}
//如果非偵錯模式,則關閉錯誤輸出和設定錯誤別為不輸出。
else
{
error_reporting( 0 );
ini_set( ‘display_errors‘ , ‘Off‘ );
}
3, 編碼問題
開發文檔編碼和瀏覽器輸出編碼,以後mysql編碼,統一設定為utf-8格式。
1,notepad++和zend studio都可設定,具體可以百度。
2,輸出設定在代碼中最前面加上。
header( "Content-type:text/html;charset=utf-8" )
總結:
一般在開發時,在檔案執行的開頭。加上這一段。
<?php
header( "Content-type:text/html;charset=utf-8" );
define( ‘DEBUG‘ , true );
if( DEBUG )
{
error_reporting( E_ALL ^ E_NOTICE );
ini_set( ‘display_errors‘ , ‘On‘ );
}
else
{
error_reporting( 0 );
ini_set( ‘display_errors‘ , ‘Off‘ );
}
//你的其它代碼
?>
PHP調試總結