下面由phpstorm教程欄目給大家介紹PHPStorm怎么調(diào)試Docker中PHP項目 ,希望對需要的朋友有所幫助!
本機(jī)一直使用docker開發(fā),對于習(xí)慣使用調(diào)試的人來說,PHP放在docker容器中又多了一層難度。
當(dāng)然,這只適用于還不懂配置的時候,一旦掌握竅門,其實是簡單不過的事情,和本機(jī)配置幾乎無任何難度差別。
1 環(huán)境
開始之前,我們先做一些環(huán)境假設(shè):
- 本機(jī)安裝了docker
- 有一個安裝了xdebug擴(kuò)展的PHP容器
- 代碼在本機(jī)的目錄是:
/Users/gary/dnmp/www/localhost
- 代碼映射到容器目錄:
/var/www/html/localhost
- 項目使用域名
localhost
,并在主機(jī)hosts和nginx配置中綁定 - PHP-FPM通過
9000
端口與nginx容器/應(yīng)用連接
這里的域名不一定是localhost
,如果你用了Laravel、Yii、Thinkphp等框架,那一般會用類似 mydev.com
、dev.awaimai.com
、awaimai.dev
的域名,本文一樣適用。
2 php.ini配置
主要配置如下:
[XDebug] xdebug.remote_enable = 1 xdebug.remote_handler = "dbgp" xdebug.remote_host = host.docker.internal
這幾行的作用是:
- 開啟xdebug遠(yuǎn)程調(diào)試
- 調(diào)試方式用
dggp
- 遠(yuǎn)程地址用
host.docker.internal
,也就是docker容器所在的主機(jī)。如果主機(jī)是Linux系統(tǒng),host.docker.internal
可能用不了,需要改用PHP容器和主機(jī)同一虛擬網(wǎng)絡(luò)下的IP,在主機(jī)中用docker network inspect dnmp_default
命令可找到,其中dnmp_default
是容器的所在的網(wǎng)絡(luò)。
這里我們沒有配置xdebug.remote_port
,因為xdebug默認(rèn)使用9000
,與我們FPM一致了,不用再設(shè)置。如果FPM使用其他端口,remote_port
也要改成相應(yīng)端口。
配置完成后,重啟PHP容器。
2 PHPStorm配置
1 菜單選擇 Run – Edit Configurations,

2 在彈出的框中點左上角的 +
號,選擇 PHP Web Page
。

3 現(xiàn)在還沒有任何的服務(wù)器,我們要加一個。如下,點擊 server 右側(cè)的 ...
按鈕。

4 然后就是配置服務(wù)器的信息,這里就是docker容器了。
- Name:服務(wù)器名稱,隨便寫都可以。
- Host:域名,這里我用
localhost
,如果你的域名類似awaimai.dev
,那就填awaimai.dev
。 - Port:連接服務(wù)器的端口。這里我們通過nginx連到PHP,用的是
80
端口,所以這里保留默認(rèn)80
。 - Debugger:用Xdebug。
- Use path mappings:這里一定要
勾選
,然后填寫本地代碼與容器代碼的映射關(guān)系。如果用的是框架,這里就填框架的根目錄。

然后點擊OK保存。
5 返回后,
- Name:填寫一個配置名稱,隨便填,這里我們調(diào)試首頁,填
Index
。 - Server:下拉選擇服務(wù)器,這里我們選擇剛加的
localhost
。 - Start URL:起始調(diào)試的頁面,
/
表示首頁,如果是其他頁面,比如/home/index
,那就填/home/index
。

點擊OK
保存。
3 開始調(diào)試
返回代碼窗口,在代碼前打一個【斷點】,再點擊【調(diào)試按鈕】,如下:

PHPStorm就會自動打開瀏覽器,等程序執(zhí)行到斷點時,自動停止。
這里我們就可以看到PHP中的全局變量、調(diào)用棧、臨時變量,
并且可以單步調(diào)試,非常方便。