用過Java、C#等靜態語言的同學除錯程式碼經常是打個斷點,然後輕鬆除錯,而PHPer除錯程式碼時經常是
echo $a;exit;
非常的不方便,有的同學有時候打完斷點沒刪就給commit上去了,這就造成了很多困擾,有沒有辦法更優雅的除錯呢?那當然有的,這裡用到一個PHP模組xdebug,xdebug安裝教程,使用它進行PHP程式碼除錯,能有效減少工作量和BUG除錯時間,特別是在某些複雜的程式中,光靠看都無法找出問題
Xdebug是一個開放原始碼的PHP程式偵錯程式(即一個Debug工具),可以用來跟蹤,除錯和分析PHP程式的執行狀況。
- 如果是整合環境,比如phpstudy,就不需要自己安裝了,直接環境->PHP->設定(PHP版本號別搞混了)
- 這裡設定下埠號,憑自己喜好就行,我設定了9001
- 檢視phpinfo,搜尋下,有xdebug模組就行了
接下來開啟phpstorm,ctrl+alt+s開啟設定
來到debug設定,將埠改成前面你設定的埠號(其他預設即可,當然也可以開啟,看不懂英文可以翻譯一下)
在點開Servers,點+號新建一個,名字隨意,Host填自己要Debug的域名(比如localhost,我這裡填了一個虛擬域名),埠號預設80即可
然後右上角有一個Edit Configurations,點選開啟
點選加號,新增一個PHP Web Page
name隨意,Server選剛才你配置的,startUrl是啟動的介面地址,如果我要debug一個下單的介面,於是我把他填寫了進去,然後點選箭頭所指向的Validate
第一個選項是除錯本地的,第二個是除錯遠端的,我這裡遠端不講了,免得搞暈你們
第一個輸入框填寫自己的專案目錄,因為我這個是tinkphp框架,我把他指向了專案目錄的public目錄
第二個填寫自己的域名,這裡編輯器自動幫忙填寫了
點選Validate按鈕,phpstorm會幫忙檢測配置是否正確,如果有錯請按照提示修改
最後點選右上角的這隻臭蟲,會自動開啟瀏覽器進行除錯,臭蟲旁邊的電話機如果變綠了表示正在監聽9001埠
這時phpstorm會自動開啟debug控制檯,點選箭頭自動下一步,左邊點選紅點可以打斷點
如果想用postman呢?
把這個引數拿過來把這對key-vlue加入postman的引數內(後來測試不加也可以,這個引數可以不需要,以前用chrome的xdebug helper時會用到),點選send自動開啟除錯(postman會一直處於傳送狀態中,直至斷點除錯完畢)
我寫的教程希望以最簡短的步驟讓讀者能執行起xdebug,某些細節方面就忽略了,有興趣的同學可以去網上查詢更詳細的配置和說明(當然沒興趣)
- 斷點除錯時,PHP指令碼執行超時後Apache自動斷開連線,然後返回一個500錯誤
在apache的http.conf檔案加入
FcgidIOTimeout 6000
本作品採用《CC 協議》,轉載必須註明作者和本文連結