1. 程式人生 > >PhpStorm連接Docker容器配置xdebug斷點調試

PhpStorm連接Docker容器配置xdebug斷點調試

smp 右鍵 第一次 clu 兩個 local mac ecif 最簡

本教程主要演示xdebug在PhpStorm中配置方法。

一、環境說明

1.Mac筆記本(本教程演示過程使用的是Mac OS操作系統,和windows環境是有區別的,這一點需要特別註意);

2.在Mac筆記本上安裝Docker,筆者安裝的Docker版本信息如下:

B000000075547S:Downloads v_shiyanjun$ docker version
Client:
 Version:           18.06.1-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        e68fc7a
 Built:             Tue Aug 
21 17:21:31 2018 OS/Arch: darwin/amd64 Experimental: false Server: Engine: Version: 18.06.1-ce API version: 1.38 (minimum version 1.12) Go version: go1.10.3 Git commit: e68fc7a Built: Tue Aug 21 17:29:02 2018 OS/Arch: linux/amd64 Experimental:
true

3.Docker容器安裝Centos,版本信息:

[root@37815a453e3e /]# uname -a
Linux 37815a453e3e 4.9.93-linuxkit-aufs #1 SMP Wed Jun 6 16:55:56 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@37815a453e3e /]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core) 

4.安裝lnmp環境(nmp1.5.tar.gz),lnmp一鍵安裝包下載地址:

https://
lnmp.org/install.html

5.安裝xdebug(xdebug-2.6.1.tgz),下載鏈接:

https://xdebug.org/files/xdebug-2.6.1.tgz

6.PhpStorm開發軟件(PhpStorm 2018.2.3),下載鏈接:

https://download.jetbrains.com/webide/PhpStorm-2018.2.4.dmg

7.準備一個php項目,並導入到PhpStorm開發工具中,用戶debug代碼調試演示;

二、nginx的配置

[root@37815a453e3e vhost]# pwd
/usr/local/nginx/conf/vhost
[root@37815a453e3e vhost]# ls
xbs.com.conf
[root@37815a453e3e vhost]# cat xbs.com.conf 
server
    {
        listen 8888;
        server_name xbs.com n;
        index index.php;
        root  /home/work/xbs;

        include rewrite/none.conf;
        #error_page   404   /404.html;

        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

        include enable-php.conf;

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\.
        {
            deny all;
        }

        access_log  /home/work/logs/xbs.com.log;
    }
[root@37815a453e3e vhost]# 

三、xdebug在PhpStorm中的配置

1.安裝好xdebug之後,在php.ini文件尾部添加如下內容,註意:xdebug.remote_host配置的是mac筆記本的IP地址,xdebug.idekey要和PhpStorm中配置的一致

[xdebug]
zend_extension=xdebug.so
xdebug.profiler_enable=on
xdebug.trace_output_dir="/usr/local/php/xdebug_trace"
xdebug.profiler_output_dir="/usr/local/php/xdebug_profiler"
xdebug.default_enable=0
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=192.168.0.104
xdebug.remote_port=9000
xdebug.remote_connect_back=0
xdebug.remote_autostart=1
xdebug.idekey=PHPSTORM
xdebug.remote_log=/usr/local/php/xdebug/remote.log

2.在PhpStorm中配置php debug,註意端口為9000,要和上面php.ini文件中的xdebug.remote_port一致:

技術分享圖片

3.在PhpStorm中配置php server,註意host和端口要和lnmp中配置的一致,Debugger下拉框選擇Xdebug,下面的File/Directory配置的是Mac筆記本磁盤上的php項目所在目錄,而absolute path on the server配置的是Docker容器中的lnmp服務器上的php項目目錄,這兩個目錄是可以在啟動Docker容器的時候通過-v參數進行指定的。

技術分享圖片

4.PhpStorm中Docker的配置,主要是目錄的映射配置,圖中Virtual machine path配置的是Docker容器中php項目目錄,而Local path配置的是Mac筆記本本地磁盤上php項目的目錄:

技術分享圖片

5.配置好Docker之後,在PhpStorm的最下方可以找到Docker工具面板,點擊綠色的啟動按鈕就可以啟動Docker服務來:

技術分享圖片

Docker服務啟動之後,可以管理Docker鏡像和Docker容器,在指定的鏡像上面點擊右鍵可以創建容器,如下圖所示,我基於sha256:f84360b124ec這個Docker鏡像創建來一個名為yaf-xbs-container-tq的Docker容器:

技術分享圖片

6.創建容器時會彈出如下對話框,可以配置Docker容器相關的信息,主要是docker容器和Mac筆記本的ip地址、項目端口以及項目目錄的映射方面的配置:

技術分享圖片

上圖中的192.168.0.104:8888是我Mac筆記本的IP地址和項目端口,意思是,當我在筆記本上使用瀏覽器訪問192.168.0.104:8888的時候,會訪問到Docker容器8888端口。

7.點擊上圖右下角的run按鈕,就可以啟動Docker容器了,在右邊的PortBindings選項卡可以編輯和添加宿主機和Docker容器之間的端口映射關系:

技術分享圖片

在VolumeBingdings選項卡可以編輯宿主機和Docker容器之間項目目錄映射關系:

技術分享圖片

8.添加容器執行命令

啟動Docker容器之後,在容器上點擊右鍵選擇exec,然後選擇create即可創建容器執行命令,比如這裏我添加了一個條重啟lnmp的命令"lnmp restart":

技術分享圖片

點擊OK,再次在容器上點擊右鍵就能看到剛添加的Docker容器執行命令"lnmp restart",點擊該命令就可以在容器中重啟lnmp了。

9.啟動debug監聽

最後一步,一定要點擊PhpStorm右上角對小電話圖標來啟動PhpStorm對Xdebug對監聽,否則debug不生效:

技術分享圖片

10.在php項目代碼中打斷點,瀏覽器訪問http://192.168.0.104:8888,即可觸發PhpStorm對xdebug調試功能,自動進入debug模式。這裏用到到php項目是yaf框架到最簡單到demo。

技術分享圖片

11.瀏覽器響應結果(這裏返回到是一個json格式的數據)

技術分享圖片

總結:由於筆者是第一次使用Mac系統,也是第一次接觸php語言並搭建php開發環境,也是第一次接觸Docker,所以整個過程還算比較曲折。經過反復查詢資料,反復重試,才有來本篇教程。若有疏漏之處,請讀者指正。

PhpStorm連接Docker容器配置xdebug斷點調試