我正在尝试使用 Xdebug 和 PhpStorm 设置 PHP 的远程调试。我的本地开发机器装有 Windows 7,而远程机器装有 CentOS 6。
我按照这个指南操作却无济于事:
我可以正常连接到 SSH,并且我的隧道设置与指南中的完全相同:
当我尝试通过浏览器连接到服务器(设置了适当的 cookie)时,Xdebug 日志中出现以下错误:
# tail /tmp/xdebug.log
Log opened at 2016-05-25 09:53:36
I: Connecting to configured address/port: 127.0.0.1:9000.
E: Could not connect to client. :-(
Log closed at 2016-05-25 09:53:36
Log opened at 2016-05-25 09:55:36
I: Connecting to configured address/port: 127.0.0.1:9000.
E: Could not connect to client. :-(
Log closed at 2016-05-25 09:55:36
这是我的/etc/php.d/xdebug.ini
:
; Enable xdebug extension module
zend_extension=/usr/lib64/php/modules/xdebug.so
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_autostart=1
xdebug.idekey=PHPSTORM
xdebug.remote_log="/tmp/xdebug.log"
Xdebug 列在phpinfo()
输出中,并且它成功地将错误写入日志,因此我认为问题不在于 Xdebug 的配置。PhpStorm 正在监听连接,我可以在本地计算机上毫无问题地调试站点,但远程调试不起作用。
看来PuTTy无法建立SSH隧道。
以下是服务器上开放的端口列表:
# netstat --listening -n
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 :::80 :::* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 ::1:25 :::* LISTEN
udp 0 0 0.0.0.0:68 0.0.0.0:*
据我所知,应该有一些东西在监听9000
端口。否则 PuTTy 还能如何将数据从服务器转发到我的本地计算机?关于如何修复它并建立正确连接的任何想法?也许它与 selinux 或 SSH 配置有关?