mac下phpstorm/vscode进行debug调试docker中的php程序

一、环境准备

以下环境安装不再阐述,可以自行解决
1、安装好对应的docker
2、安装好对应的lnmp程序,这里php以php7.2版本为例

二、安装xdebug扩展

进入容器,安装对应的xdebug,对应的扩展版本官网参考:https://pecl.php.net/package/xdebug,这里可以查看扩展分别匹配的php版本,我这里选择的是2.9.8版本的扩展

cd /usr/local/php7/bin
/usr/local/php7/bin/pecl install -Z http://pecl.php.net/get/xdebug-2.9.8.tgz

注意:
如果提示ERROR: /tmp/pear/temp/xdebug/configure --with-php-config=/usr/local/php7/bin/php-config' failed,这些错误,说明一些依赖缺少了,可以执行以下的命令进行安装依赖

yum install -y autoconf make gcc g++ php7.2-dev pkg-config libssl-dev 

三、php增加扩展

进入对应的php配置文件中,在php.ini文件中增加以下配置,注意:3.x版本的xdebug和2.x版本的配置有点不同,3.x版本的可以自行查询解决

[xdebug]
zend_extension=/usr/local/php7/lib/php/20170718/xdebug.so
xdebug.mode=debug
xdebug.remote_enable=1
xdebug.remote_autostart=1
;172.20.10.2是自己的宿主机ip,可以使用ifconfig进行查看
xdebug.remote_host=172.20.10.2
xdebug.remote_port=9000
xdebug.idekey=VSCODE

重新启动php服务或者重新启动容器即可
可以在php文件中进行验证下,是否正确启动xdebug扩展,
在项目中增加如下代码查看

phpinfo();

如下代表扩展启动正常


image.png

四、配置vscode

1、在项目根目录下创建.vscode文件夹,在文件夹下创建launch.json文件
2、这里port端口需要和上方的php.ini中配置的端口一致
3、pathMappings中的目录需要和容器中的项目目录相同,这个/www/wen对应的是容器中的映射目录 ,比如我的dockerfile启动命令的映射目录是这样的
-v $(pwd):/www/wen

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug on Docker",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "pathMappings": {
                "/www/wen: "${workspaceFolder}"
            }
        }
    ]
}
image.png

五、注意

如果调试的时候,浏览器出现 504 Gateway time-out(这个比较无所谓),并且vscode中的调试程序挂了(这个不能忍受,挂了就没法调试了),是因为调试时间过长,超过了应用程序设置的超时时间,被kill了,这时候最好设置两个地方

1、php中的php-fpm拉长执行时间
打开 php-fpm.conf 或 www.conf,设置:

request_terminate_timeout = 0

2、nginx中的超时时拉大点

fastcgi_read_timeout 3600;
fastcgi_send_timeout 3600;

六、phpstorm配置

1、配置xdebug的端口

进入setting->php→Debug,设置xdebug的端口,这个端口需要和docker中的php.ini设置的端口号相同


image.png
2、配置servers

setting->php->servers配置,如下


image.png
3、设置debug

run->edit configurations
新增php remote debug,并且选择刚刚上方配置的server,并且设置上对应的IDE key


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容