我有一个使用Xdebug设置的PhpStorm IDE,这是一个包含Xdebug并应用了浏览器模块的docker容器。但是,当我尝试“拿起电话”并刷新环境中包含的代码时,什么也没捡到。
我尝试了各种端口和服务器名称,以及可以找到的教程。我不确定它是安全性还是我的docker设置不正确,但我相对确定PhpStorm设置正确。
我尝试在Dockerfile(9000和9001)中公开端口
我的.php文件只是回声和一些应用了断点的数学运算
echo("TEST 1<br>");
$test = 2;
echo("TEST " . $test . "<br>");
$testArray = xdebug_get_code_coverage();
var_dump($testArray);
phpinfo();
dd("TEST 3");
在我的.env文件中,定义了以下内容:
PHP_IDE_CONFIG=serverName=jumbledowns-demo
XDEBUG_CONFIG=remote_host=localhost remote_port=9001
然后我的Dockerfile设置Xdebug:
RUN pecl install xdebug; \
docker-php-ext-enable xdebug; \
echo "error_reporting = E_ALL" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
echo "display_startup_errors = On" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
echo "display_errors = On" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini; \
echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini;
浏览器端的PHPinfo按照预期显示代码,并提供Xdebug的以下设置:
xdebug.remote_host localhost localhost
xdebug.remote_log no value no value
xdebug.remote_mode req req
xdebug.remote_port 9001 9000
我已经在上面尝试使用URL和分配的IP地址,并且可以根据需要更改它们。
理想情况下,我希望能够有一个命令行日志或输出来显示Xdebug试图调用的内容以及在哪个端口上。
答案 0 :(得分:0)
为了找出Xdebug打算做什么,您需要将xdebug.remote_log
设置设置为非空值,例如xdebug.remote_log=/tmp/xdebug.log
。该文件将包括所有连接尝试,以及建立连接后的通信协议内容。
remote_host =本地主机
但是几乎可以肯定是不正确的,因为在docker容器中运行的PHP和Xdebug需要打开与此主机的连接,而localhost
并不是正确的主机名/ IP地址。很有可能是host.docker.internal
之类的东西,或者更确切地说,是可以从docker容器访问的硬编码您运行IDE的机器的IP地址。