如何使用PhpStorm和Xdebug进行远程调试设置

3
我看到其他关于这个主题的问题/答案,但似乎没有一个与我遇到的问题相同,所以在这里我们来解决一下:
我正在使用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,如这里所解释的那样。
我还尝试了两种不同的设置方法:
1. 我按照这个零配置教程进行操作,但在第7步中,我从未收到传入连接对话框。 2. 我还按照这个不同的教程进行操作,但在将XDebug与PhpStorm集成步骤中,我在第3步上没有从调试器下拉列表中选择XDebug选项。 我需要什么 如果有人能帮助我找出我缺少或做错了什么,那就太好了!

1
附注:1)“此外,我没有设置remote_host IP,因为我正在使用remote_connect_back选项来允许多个IP。”现在每个人都有机会建立调试会话,查看您的实时服务器密码等。2)“我想开始使用Xdebug来调试使用生产服务器的网站。”好主意。您知道安装了xdebug后执行将需要2倍或更长时间吗? - LazyOne
关于实际问题:那么问题是什么?你能否进行调试?因为“它可以工作但又不能工作”并不是问题的最佳描述。1)你如何确定xdebug调试正在工作?2)这个“生产服务器”位于哪里——在互联网上还是本地局域网上?3)你是否检查了防火墙(本地和远程都要检查),因为xdebug连接到IDE而不是反过来。4)如果它在互联网上/属于另一个子网,你是否已经在路由器上打开/端口,以便传入的连接可以路由到你的计算机? - LazyOne
  1. 当您在IDE中激活“电话句柄”图标时,您是否可以通过telnet从远程服务器连接到xdebug端口上的IDE?如果不能--那么它必须是它们之间的防火墙。
  2. PhpStorm v8支持远程解释器--因此无需设置所有这些内容--只需设置SFTP部署、远程解释器,您就可以调试远程CLI脚本(但是,对于调试网页,您仍然最好按照您计划要做的方式进行)。
- LazyOne
在配置用于调试CLI脚本的PHP解释器时(与网页无关),我在第三步中没有从调试器下拉列表选项中选择XDebug的选项。 - LazyOne
@LazyOne非常感谢您的评论,显然我还有很多需要学习的东西,但这就是我们在这里的原因,对吧?;)最好尝试在其他地方进行调试,我的目标是避免在不同环境中调试可能出现的问题。 - Albert
1个回答

2

我本来想把这个留言添加到评论中,但是没有足够的声望。

您在项目中正确设置了偏好设置吗?您能够配置和验证部署服务器(在“部署”下)吗?

之后,在 PHP > 服务器下设置服务器并进行验证。

不要忘记检查主机防火墙。

确保您可以在没有 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。这些工具一起使用可以让你在一个尽可能接近生产环境的环境中调试代码,而不会增加调试工具带来的负担和风险。


非常感谢,我一定会研究一下,看起来是正确的方法! - Albert

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