【发布时间】:2020-06-24 16:06:27
【问题描述】:
我正在尝试将调试添加到使用exec() 从另一个 PHP 脚本中异步启动新会话的旧项目:
exec("php /var/www/html/validata/index.php",$result)
普通的 PHP 脚本可以使用 Xdebug 完全调试,但使用 exec 命令启动的脚本不是因为它无法从 file:///var/www/html/index.php 映射到本地文件位置,因为它是在 CLI shell 中启动的。以这种方式启动的会话会触发调试器,但在本地找不到文件:
Cannot find file '/var/www/html/validata/index.php' locally.
To fix it set server name by environment variable PHP_IDE_CONFIG and restart debug session.
我已按照说明将PHP_IDE_CONFIG 添加到环境中。我还将它添加到服务器中,将 127.0.0.1 替换为桌面 PC IP 地址(服务器在 docker 容器中运行):
export XDEBUG_CONFIG="remote_enable=1 remote_mode=req remote_port=9000 remote_host=127.0.0.1 remote_connect_back=0"
任何指针都非常感谢!
更新
解决方案:
使用设置为 docker 容器的 cli 解释器(在设置 > 语言和框架 > PHP > CLI 解释器中,添加新的,选择 docker 并将其指向 php 二进制文件),以便可以使用新的调试启动调试会话配置。我已将 exec 命令中的参数复制到新配置中,它现在可以完全调试脚本。我必须准备一个数据库表以使其完全可测试,但这对我来说是一个可行的解决方案。
感谢大家的回复!
【问题讨论】:
-
1) 你在本地有那个文件吗? 2)如果你这样做 - 添加路径映射,以便 IDE 可以找到它(
Settings/Preferences | Languages & Frameworks | PHP | Servers) -
这不起作用,因为它无法将 file:///path 映射到我的本地仓库。
标签: php docker phpstorm xdebug