利用docker搭建php調試環境(phpstorm+xdebug)

前言

最近審計php代碼發現手動打印變量實在是太累了,不能快速的瞭解目標應用程序的運行邏輯。還是決定轉戰xdebug,下面是一些簡單的記錄…真香

docker環境獲取

爲什麼用docker來搭建調試環境呢?一是本地搭建比較麻煩,二是沒有docker便攜,放在docker裏,更加靈活。docker環境可以直接到dockerhub上去找一個,我用的下面這個

https://hub.docker.com/r/tommylau/xdebug

上面這個環境,集成了php+apache+xdebug,配置也是沒啥大問題的,網上很多教程都說安裝好xdebug還需要在php.ini裏進行配置,但是這個環境的配置文件在/usr/local/etc/php/conf.d/ext-xdebug.ini,內容如下

zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.remote_autostart=0
xdebug.remote_connect_back=1
xdebug.remote_port=9000

這個配置文件我們後面還需要稍微改一下

phpstorm遠程調試環境配置

在調試之前,我們需要先把web應用部署到docker中去

docker run --name xdebug -v /path/to/web:/var/www/html -p 80:80 -d tommylau/xdebug

運行上述命令,可以把本地的web目錄掛載到docker的web目錄中。如果需要連接宿主機的數據庫,那麼只需要在數據庫連接配置時指定數據庫ip爲宿主機的ip就行(當然,首先要保證你使用的用戶支持遠程連接)

如果要使root用戶支持遠程主機連接,可以執行以下命令:
grant all privileges on . to ‘root’@’%’ identified by ‘密碼’ with grant option;
flush privileges;

如果要連接其他docker中的數據庫,網上有教程,就不詳述了。

接下來我們開始配置phpstorm吧

  • 在settings>build,Execution,Deployment>Deployment 點擊+號新建一個deployment,由於我們這裏使用的是docker掛載目錄的方式,所以type選擇選擇 in place也沒啥問題,web server url選擇項目的在服務器上的路徑(url)

在這裏插入圖片描述

  • 然後選擇Mappings選項,設置映射

在這裏插入圖片描述

  • 在settings>Languages&Frameworks > php中設置php解釋器

在這裏插入圖片描述

  • 展開php這一欄,選中debug欄,設置一下監聽端口,這處的端口可不是隨便填的,需要和docker裏xdebug配置的那個端口一致

在這裏插入圖片描述

  • 展開debug欄,選中DBGp Proxy,IDE key比較關鍵,這就涉及到我們服務端xdebug的設置了,xdebug的設置修改爲下面這樣
zend_extension=xdebug.so
xdebug.idekey="PHPSTORM"
xdebug.remote_enable=1
xdebug.remote_autostart=0
xdebug.remote_connect_back=1
xdebug.remote_port=9000

也就是添加了一行xdebug.idekey="PHPSTORM",所以phpstorm中配置的ide key需要和服務器上的xdebug配置文件中的idekey一致,至於host和port就是服務器的host:port

在這裏插入圖片描述

  • 然後再選中servers欄,點擊+號創建一個server, host port就是web服務器地址,debugger選擇Xdebug,然後這裏需要勾選path mappings,並且正確設置目錄映射,否則調試的時候,會出現cannot find a local file的錯誤,類似下面這樣

在這裏插入圖片描述

在這裏插入圖片描述

  • 最後,需要編輯一下deubg 的配置
    在這裏插入圖片描述
    創建一個php web page,然後server選擇我們剛剛創建的xdebug, 設置一下需要調試項目的url
    在這裏插入圖片描述

  • 設置的差不多了,我們在run > web server debug validation欄檢查設置是否正確,記得選中remote web server, deployment server就是我們剛剛創建的deployment, 出現如下現象則表示設置正確

在這裏插入圖片描述

現在就可以debug剛剛創建的 php web page了,點擊右上角那個小蟲子就行,這是可能出現如下問題
cannot find a local copy of the file .....,這時候點擊click to set up path mappings

在這裏插入圖片描述
會彈出一個框,然後選中那個複選框就行

在這裏插入圖片描述

接下來就可以愉快的調試了

在這裏插入圖片描述

參考

https://segmentfault.com/a/1190000011907425

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章