我正在尝试构建一个小环境来测试PHP调试在Docker中使用Visual Studio Code。我的想法是创建一个模型,我可以使用我们在公司的几个PHP系统。然而,我还不能调试或使用断点.
这是我的文档
FROM php:7.4-apache
RUN apt-get update && apt upgrade -y
RUN docker-php-ext-install pdo mysqli pdo_mysql \
&& docker-php-ext-enable mysqli
RUN pecl install xdebug-3.1.5 \
&& docker-php-ext-enable xdebug
ADD ./app /var/www/html
COPY ./app/test-form.conf /etc/apache2/sites-available/test-form.conf
# Copy php.ini
COPY ./php.ini /usr/local/etc/php
RUN echo 'SetEnv MYSQL_DB_CONNECTION ${MYSQL_DB_CONNECTION}' >> /etc/apache2/conf-enabled/environment.conf
RUN echo 'SetEnv MYSQL_DB_NAME ${MYSQL_DB_NAME}' >> /etc/apache2/conf-enabled/environment.conf
RUN echo 'SetEnv MYSQL_USER ${MYSQL_USER}' >> /etc/apache2/conf-enabled/environment.conf
RUN echo 'SetEnv MYSQL_PASSWORD ${MYSQL_PASSWORD}' >> /etc/apache2/conf-enabled/environment.conf
RUN echo 'SetEnv SITE_URL ${SITE_URL}' >> /etc/apache2/conf-enabled/environment.conf
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf &&\
a2enmod rewrite &&\
a2enmod headers &&\
a2enmod rewrite &&\
a2dissite 000-default &&\
a2ensite test-form &&\
service apache2 restart
这是我的docker-compose.yml
version: "1"
services:
webserver:
image: form-test
ports:
- "80:80"
# - "443:443"
volumes:
- ./app:/var/www/html
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
MYSQL_DB_CONNECTION: test
MYSQL_DB_NAME: test
MYSQL_USER: test
MYSQL_PASSWORD: test
SITE_URL: http://localhost
XDEBUG_MODE: develop,debug
XDEBUG_CONFIG:
client_host=host.docker.internal
start_with_request=yes
networks:
internal:
driver: bridge
这是我的xdebug_info.php
<?php
// xdebug_info();
phpinfo();
这是我的php.ini
[xdebug]
zend_extension=xdebug
xdebug.mode=develop,debug
xdebug.start_with_request=yes
xdebug.remote_port=9003
xdebug.client_port=9003
xdebug.remote_host=host.docker.internal
这是我的launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen on Docker for Xdebug",
"type": "php",
"request": "launch",
"port": 9003,
"pathMappings": {
"/var/www/html": "${workspaceFolder}"
},
"hostname": "0.0.0.0"
},
]
}
现在这很奇怪.似乎Xdebug成功连接到VSCode,因为当我启动xdebug_info.php
时,它显示以下消息:
当我开始监听VSCode时,消息消失了:
我还注意到VS Code中的蓝色底部栏没有像它应该的那样变成橙子。在建立了我的环境却无法让它工作之后。
1条答案
按热度按时间gzjq41n41#
看起来Xdebug已经连接到vscode并启动了一个调试会话。因此,Zobo的评论可能是正确的:这只是一个路径Map问题。
实际上,在您的
docker-compose.yml
中,但在
launch.json
配置中,因此,假设
docker-compose.yml
位于根文件夹(也是vscode的工作区文件夹)中,您实际上需要Map