使用VSCode和Docker调试PHP

我正在尝试使用VSCode调试在Docker上运行的PHP应用程序,但没有成功。

过去,我可以使用运行WAMP

Server的VSCode轻松调试PHP应用程序,但是由于我开始使用Docker,所以无法调试。在网上搜索了几本教程,在StackOverflow上检查了一些线程,但是我仍然无法正常工作。

Dockerfile:

FROM php:7.1.8-apache

COPY /cms /srv/app/cms

COPY .docker/cms/vhosts/vhost.conf /etc/apache2/sites-available/cms.conf

COPY .docker/cms/vhosts/vhost-ssl.conf /etc/apache2/sites-available/cms-ssl.conf

COPY .docker/cms/vhosts/certificate.conf /etc/ssl/certs/certificate.conf

COPY .docker/cms/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini

WORKDIR /srv/app/cms

RUN docker-php-ext-install mbstring pdo pdo_mysql

RUN pecl install xdebug

RUN docker-php-ext-enable xdebug

RUN chown -R www-data:www-data /srv/app/cms

RUN openssl req -x509 -new -out /etc/ssl/certs/ssl-cert-cms.crt -config /etc/ssl/certs/certificate.conf

RUN a2ensite cms.conf

RUN a2ensite cms-ssl.conf

RUN a2enmod rewrite

RUN a2enmod ssl

xdebug.ini

[xdebug]

xdebug.default_enable=1

xdebug.remote_enable=1

xdebug.remote_port=9000

xdebug.remote_connect_back=0

xdebug.remote_host='host.docker.internal'

xdebug.idekey='VSCODE'

xdebug.remote_autostart=1

docker-compose.yml

version: '3.7'

services:

cms:

build:

context: .

dockerfile: .docker/cms/Dockerfile

image: php:7.1.8-apache

ports:

- 18080:80

- 14430:443

volumes:

- ./cms:/srv/app/cms

links:

- mysql

- redis

environment:

DB_HOST: mysql

VIRTUAL_HOST: my.app.localhost

PHP_EXTENSION_XDEBUG: 1

VSCode:launch.json

"configurations": [

{

"name": "Listen for XDebug",

"type": "php",

"request": "launch",

"pathMappings": {

"/srv/app/cms": "${workspaceRoot}/my.app/cms",

},

"port": 9000

}, {

"name": "Launch currently open script",

"type": "php",

"request": "launch",

"program": "${file}",

"cwd": "${fileDirname}",

"port": 9000

}

]

当我调试应用程序时,没有断点被触发。我究竟做错了什么?

基于一些建议,我已经更新了docker-compose.yml和launch.json文件,但没有任何更改。

docker-compose.yml

ports:

- 18080:80

- 14430:443

- 9000:9000 //added new xdebug default port

launch.json

"configurations": [

{

"name": "Listen for XDebug",

"type": "php",

"request": "launch",

"pathMappings": {

"/srv/app/cms": "${workspaceRoot}/my.app/cms",

},

"port": 9000,

"log": true

}

]

VSCode调试控制台:

<- launchResponse

Response {

seq: 0,

type: 'response',

request_seq: 2,

command: 'launch',

success: true }

从docker-compose.yml设置中删除了Xdebug端口(9000)。这是xdebug日志结果:

日志于2018-09-30 22:21:09

I打开:连接到已配置的地址/端口:host.docker.internal:9000。E:连接到客户端超时(等待:200毫秒)。:-(日志于2018-09-30

22:21:09关闭

日志于2018-09-30

22:21:17打开:I:连接到已配置的地址/端口:host.docker.internal:9000。E:连接到客户端超时(等待:200毫秒)。:-(日志于2018-09-30

22:21:17关闭

日志于2018-09-30

22:21:18打开:I:连接到已配置的地址/端口:host.docker.internal:9000。E:连接到客户端超时(等待:200毫秒)。:-(日志于2018-09-30

22:21:18关闭

日志于2018-09-30

22:21:18打开:I:连接到已配置的地址/端口:host.docker.internal:9000。E:连接到客户端超时(等待:200毫秒)。:-(日志于2018-09-30

22:21:18关闭

还有其他建议吗?

launch.json

{

"version": "0.2.0",

"configurations": [{

"name": "Listen for XDebug",

"type": "php",

"request": "launch",

"port": 9000,

"log": true,

"externalConsole": false,

"pathMappings": {

"/srv/app/cms": "${workspaceRoot}/cms",

},

"ignore": [

"**/vendor/**/*.php"

]

},

]

}

xdebug.ini

zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so

xdebug.default_enable=1

xdebug.remote_enable=1

xdebug.remote_port=9000

xdebug.remote_handler=dbgp

xdebug.remote_connect_back=0

xdebug.remote_host=host.docker.internal

xdebug.idekey=VSCODE

xdebug.remote_autostart=1

xdebug.remote_log=/usr/local/etc/php/xdebug.log

回答:

设法通过以下设置解决了我的问题:

{

"version": "0.2.0",

"configurations": [{

"name": "Listen for XDebug",

"type": "php",

"request": "launch",

"port": 9000,

"log": true,

"externalConsole": false,

"pathMappings": {

"/srv/app/cms": "${workspaceRoot}/cms",

},

"ignore": [

"**/vendor/**/*.php"

]

},

]

}

zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so

xdebug.default_enable=1

xdebug.remote_enable=1

xdebug.remote_port=9000

xdebug.remote_handler=dbgp

xdebug.remote_connect_back=0

xdebug.remote_host=host.docker.internal

xdebug.idekey=VSCODE

xdebug.remote_autostart=1

xdebug.remote_log=/usr/local/etc/php/xdebug.log

以上是 使用VSCode和Docker调试PHP 的全部内容, 来源链接: utcz.com/qa/424629.html

回到顶部