我尝试了很多方法来让Xdebug在Docker容器中工作,我接触到了以下资源:
- Setting up Xdebug with Docker Compose and WordPress image
- Installing XDebug in Docker
- 启动调试器
- Zero-configuration Web Application Debugging with Xdebug and PhpStorm
- Xdebug & Zend Debugger bookmarklets generator for PhpStorm
- Configure Xdebug
- Troubleshooting common PHP debugging issues
- ..及其他
我认为问题可能是我不理解端口,或者是调试器会话没有启动或识别。对于调试器会话,我还尝试安装了一个设置cookie的浏览器扩展。
我最终至少有了单独的容器,一个是启用了Xdebug的开发容器。
- 停靠-编写. yml**
version: "3"
services:
production:
build: .
ports:
- "8000:80"
volumes:
- .:/var/www/html
development:
build: .
ports:
- "8080:80"
# - "10000:80" also not working
volumes:
- .:/var/www/html
- ./dev.php.ini:/usr/local/etc/php/php.ini
- 停靠文件**
FROM php:7.4.0-apache
RUN pecl install xdebug \
&& docker-php-ext-enable xdebug
- 开发程序php. ini**
xdebug.remote_enable=on
xdebug.remote_host=host.docker.internal
xdebug.remote_port=10000
xdebug.idekey=PHPSTORM
- 本地主机:8080 phpinfo数据**
- PhpStorm配置**
有什么想法吗?
1条答案
按热度按时间xytpbqjk1#
在启动我的机器并使用@abestrad和@LazyOne的注解进行进一步调查后,没有更改任何内容,打开localhost:8080突然让调试工作停止在我设置的断点处。实际上,在编写问题之前,我已经尝试重新启动Docker桌面应用程序,可能当时我的配置处于错误状态。
但最终的解决方案是:正在重新启动电脑。
小心
当然,我也试着在私人浏览器会话中打开它,但它不再工作了,这是因为特殊的cookie仍然设置在正常的浏览器存储中(cookie存储在我已经卸载的浏览器扩展中,或者在写问题之前尝试JetBrains Bookmarklets generator)。
让它每次工作的解决方案是添加以下内容:
从这里引用:
通常,您需要使用特定的HTTP GET/POST变量来启动远程调试(请参阅步骤调试)。当此设置设置为1时,即使GET/POST/COOKIE变量不存在,Xdebug也将始终尝试启动远程调试会话并尝试连接到客户机。