如何使用 phpstorm 和 Xdebug 设置远程调试
Posted
技术标签:
【中文标题】如何使用 phpstorm 和 Xdebug 设置远程调试【英文标题】:How to set up remote debugging with phpstorm and Xdebug 【发布时间】:2014-12-03 16:05:06 【问题描述】:我已经看到有关此主题的其他问题/答案,但似乎没有一个与我有相同的问题,所以我们开始吧:
我正在尝试什么
我正在使用 phpStorm 8 开发 PHP 网站(在此特定情况下为 CakePHP 2.5.1)。我的电脑上有一个网站的副本,在那里进行任何更改,然后通过集成的 FTP 工具将新版本上传到生产服务器。到目前为止,一切都很简单,完全没有问题。
现在我想开始使用 Xdebug 来调试使用生产服务器 (PHP 5.3.28) 的网站,所以我正在尝试使用 phpStorm 和 Xdebug 设置远程调试。
到目前为止我做了什么
我已经在生产服务器上安装了 Xdebug 2.1.3,它似乎可以工作。为了测试我已经完成了this other SO question 中推荐的操作,并且所有这些都有效。
php.ini
中的配置如下所示:
zend_extension="/usr/local/src/xdebug-2.1.0/modules/xdebug.so"
xdebug.profiler_enable='0'
xdebug.profiler_enable_trigger='1'
xdebug.profiler_output_dir='/home/username/debug'
xdebug.remote_enable='1'
xdebug.remote_connect_back ='1'
我没有设置 remote_port
变量,因为我可以使用默认端口 (9000)。另外,我没有设置remote_host
IP,因为我使用remote_connect_back
选项来允许多个IP,如here 所述。
我还尝试了 2 种不同的方法来设置所有这些:
我关注了this Zero Configuration tutorial,但在第 7 步我从来没有看到 Incoming Connection 对话框。
我也关注了this different tutorial,但在将 XDebug 与 PhpStorm 集成步骤中,我没有从调试器下拉列表中选择 XDebug 选项在第 3 步
我需要什么
如果有人可以帮助我弄清楚我错过了什么或做错了什么,那就太好了!
【问题讨论】:
旁注:1) “另外,我没有设置 remote_host IP,因为我使用 remote_connect_back 选项来允许多个 IP” 现在每个人都有机会为您的实时服务器建立调试会话并查看您的密码等。 2) “我想开始使用 Xdebug 来调试使用生产服务器的网站” 好主意。你知道安装 xdebug 的执行会花费 2 倍或更多的时间吗? 至于实际 Q:那是什么问题?能不能调试?因为“有效但无效”并不是对问题的最佳描述。 1) 你怎么知道 xdebug 调试工作正常? 2) 这个“生产服务器”在哪里——在互联网上还是本地局域网上? 3)您是否检查了防火墙(本地和远程),因为它是连接到 IDE 而不是其他方式的 xdebug。 4) 如果它在 Internet 上/另一个子网的一部分——您是否在路由器上打开 /ports 以便传入连接可以成为您计算机的路由器? 5) 当您在 IDE 中激活“电话手柄”图标时,您可以通过telnet
从远程服务器连接到 xdebug 端口上的 IDE 吗?如果你不能——那么它必须在它们之间的某个地方设置防火墙 6)PhpStorm v8 支持远程解释器——所以不需要设置所有这些东西——只需设置 SFTP 部署、远程解释器,你就可以调试远程 CLI 脚本(但是是的,为了调试网页,你最好还是按照你的计划去做)
“我没有在第 3 步的 Debugger 下拉列表选项中选择 XDebug” 这是用于配置 PHP 解释器(将用于调试 CLI 脚本并且与网页无关)
@LazyOne 非常感谢您的 cmets,显然我还有一些东西需要学习,但这就是我们来这里的原因,对吗? ;) 最好尝试在其他地方进行调试,我的目标是避免在不同环境中调试可能出现的问题
【参考方案1】:
我会将此添加到 cmets,但没有所需的代表。
您是否在项目中正确设置了首选项?您是否能够配置和验证您的部署服务器(在 Deployment 下)?
之后,在 PHP > Server 下设置服务器并验证它。
不要忘记检查主机上的防火墙。
确保您可以在没有 PHPStorm 的情况下使 XDebug 正常工作,然后绕回去集成它。
这些是我用于 CLI 项目的驱动程序路径以外的 php.ini 设置:
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_autostart = 1
xdebug.remote_host = 192.168.100.1
最重要的是,听 LazyOne。指定您的远程主机。并且不要在您的生产设备上运行调试器。花一些时间了解虚拟机。我的建议是查看 VirtualBox、Vagrant 和 SaltStack。结合使用这些工具,您可以在尽可能接近生产的环境中调试代码,而不会增加调试工具所涉及的负担和风险。
【讨论】:
非常感谢,我一定会调查的,看来是要走的路!以上是关于如何使用 phpstorm 和 Xdebug 设置远程调试的主要内容,如果未能解决你的问题,请参考以下文章