为了账号安全,请及时绑定邮箱和手机立即绑定

在 VSCode 中使用 Docker 调试 PHP

在 VSCode 中使用 Docker 调试 PHP

PHP
繁星coding 2022-10-09 17:26:57
看起来一切正常,但 VSCode 并没有停止调试。我有一个运行 PHP 映像的 docker 容器。我需要做什么才能在断点处停下来?我在日志中看不到错误,恰恰相反,他们似乎在说断点配置得很好,并且代码运行正确。容器的 IP为 172.22.0.2,我的主机的 IP为 172.22.0.1文件xdebugo.so存在于容器内: /usr/local/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so主机host.docker.internal已正确设置。我使用以下方法构建了我的图像:docker build -t phpdebug:5 .该文件/usr/local/etc/php/conf.d/xdebug.ini存在于正在运行的容器中。启动.json{    "version": "0.2.0",    "configurations": [        {            "name": "Listen for XDebug",            "type": "php",            "request": "launch",            "port": 9000,            "log": true,            "externalConsole": false,            "pathMappings": {                "/": "${workspaceRoot}/"            }        }    ]}码头工人-compose.ymlversion: '2'services:  app:    restart: 'no'    image: phpdebug:5    command: php -S 0.0.0.0:8000    ports:      - "8000:8000"    volumes:      - phpdata:/app    environment:      PHP_EXTENSION_XDEBUG: 1volumes:  phpdata:    driver: local    driver_opts:      type: 'none'      o: 'bind'      device: '/home/element/php/tuto'/usr/local/etc/php/conf.d/xdebug.inizend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so"xdebug.default_enable=1xdebug.remote_enable=1xdebug.remote_port=9000xdebug.remote_handler=dbgpxdebug.remote_connect_back=0xdebug.remote_host=host.docker.internalxdebug.idekey=VSCODExdebug.remote_autostart=1xdebug.remote_log=/usr/local/etc/php/xdebug.log/etc/hosts127.0.0.1   localhost::1 localhost ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allrouters172.22.0.2  d484e93eed2a172.22.0.1      host.docker.internalDockerfile:FROM phpRUN pecl install xdebugRUN ip -4 route list match 0/0 | awk '{print $3 "host.docker.internal"}' >> /etc/hostsCOPY custom.ini /usr/local/etc/php/conf.d/xdebug.ini
查看完整描述

1 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

日志显示在<init数据包中:


file:///app/index.php

所有断点的配置如下:


file:///home/element/php/tuto/result.php

这表明您所做的路径映射不正确:


"pathMappings": {

    "/": "${workspaceRoot}/"

}

在您的情况下,我认为应该是以下内容,前提是这两个目录都有一个index.phpandresult.php文件。如果没有,您需要调整第二个路径,使其成为包含index.php和result.php文件的路径。


"pathMappings": {

    "/app": "/home/element/php/tuto"

}


查看完整回答
反对 回复 2022-10-09
  • 1 回答
  • 0 关注
  • 286 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信