XDebug:如何调试远程控制台应用程序?

15

我已经阅读了这个文档:http://xdebug.org/docs/remote

我可以对我的 Web 应用程序进行调试。
但是调试器在控制台命令中不会启动。

我的 XDebug 的 .ini 文件(它有效):

$ cat /etc/php5/fpm/conf.d/xdebug.ini
zend_extension=/usr/lib/php5/20090626/xdebug.so
xdebug.idekey="PHPSTORM"
xdebug.remote_connect_back=1
xdebug.remote_enable=1

cli 的 .ini 文件是相同的。

我也尝试在调试之前添加了 export XDEBUG_CONFIG="idekey=PHPSTORM remote_enable=1 remote_connect_back=1",但没有帮助。

我该如何启用它?


2
你有查看这篇博客文章中的说明吗? - CrazyCoder
2个回答

43

简短回答:

我们需要设置2个环境变量,这两行

export PHP_IDE_CONFIG="serverName={SERVER NAME IN PHP STORM}"
export XDEBUG_CONFIG="remote_host=$(echo $SSH_CLIENT | awk '{print $1}') idekey=PHPSTORM"

更新: 好的 IDE(例如 PhpStorm)将为您执行此操作,只需将 PHP 解释器设置为远程解释器。


3
第二行应该足够了。 - brablc
1
在我的情况下,第一行也是必需的。 - EasyCo
我尝试将第二行放入/etc/php5/cli/php.ini,但由于它很奇怪且没有任何作用,我在Google上搜索了“Ubuntu export”,并学习到应该在运行php脚本之前在终端中运行它。这从你自己的问题的答案中并不明显。 - iVenGO
在我的情况下,第一行是必需的。对于第二行,我使用了php.ini中的设置。另外,将remote_host设置为我的客户端IP(即外部IP)并没有起作用,因为连接是通过互联网进行的,所以我不得不使用反向SSH隧道。如果您(或您的路由器通过端口转发)有公共IP和防火墙配置,则应该可以正常工作。 - NeverEndingQueue

2
感谢@DmitryR的回答!
但是,为了避免每次打开控制台都要导出XDEBUG_CONFIG,我在我的~/.bashrc文件中添加了第二行(对我来说已经足够了)。
export XDEBUG_CONFIG="remote_host=$(echo $SSH_CLIENT | awk '{print $1}') idekey=PHPSTORM"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接