我使用Xdebug / PhpStorm很长时间了,但从未见过此问题:
当我在PhpStorm中运行调试器时,调试器会在正确的行上中断,但是当我单步执行代码时,它会跳到代码中的随机位置,浏览器会收到空的响应,日志中没有错误。
更多信息:
我在具有图像mattrayner / lamp:latest-1604的同一台机器上具有类似的设置-在此设置中,问题不会重现
如果我设置“在第一行停止”,则可以在第一行中逐步执行代码,但是后续运行不会遍历该代码 ,区别:PHP版本5.5.9-1ubuntu4.27,Ubuntu 14.04.6
当调试器中断时,任何操作都会失败-例如单击“运行”将完成执行,但浏览器显示空响应,并且在中断后未执行任何操作。
/etc/php/7.3/apache2/conf.d/20-xdebug.ini
zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_port=9000
xdebug.remote_connect_back=0
xdebug.remote_host=host.docker.internal
有什么办法解决吗?
尝试了不同的版本(7.2、7.3、7.4)-结果相同:
这是我的路径映射
和我的Apache conf
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName dev.usaddress.com
CustomLog /var/log/apache2/access.log vhost_combined
SSLEngine on
SSLCertificateFile /app/dev.usaddress.com.crt
SSLCertificateKeyFile /app/dev.usaddress.com.key
DocumentRoot /app/usaddress
<Directory /app/usaddress>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
答案 0 :(得分:0)
您应该检查路径映射。对我来说通常是这样。可以在您的脚本第一次进入的地方正确地映射它,但是在其他地方可以被错误地映射。确保仅映射了项目的根目录,或者在所有可能的路径上都具有正确的映射。
服务器设置位于Languages & Frameworks > PHP > Servers
如果您查看我的屏幕截图,您会看到只有文件夹public
映射到服务器上的绝对路径(此处为/srv/sylius/public
)。这意味着其他文件夹将相对于该公用文件夹进行映射。
如果您认为不是这种情况,那么我只能建议您手动尝试从调试器在正确的行上中断的位置开始逐步进行代码,直到发生意外行为。从那一点开始,尝试了解它为什么会发生。
答案 1 :(得分:0)
关闭您的项目
转到项目目录
删除.idea
文件夹
使用项目目录创建一个新项目
转到“编辑配置”并重新创建调试配置
运行调试器
注意:
我无法使用类似的env重现此错误
在同一环境中运行的其他项目中,我无法重现此错误
因此,我尝试重新创建项目并解决了问题
答案 2 :(得分:0)
对我来说,这个问题是由于在第一个断点被击中时在评估过程中导致错误的监视表达式造成的。移除有问题的手表解决了它。