几个星期以来,我一直在苦苦挣扎 . 我放弃并成功连接到本地虚拟机,但速度太慢了 . 我必须连接到这台远程机器,即使它杀了我 .
我的Windows 8.1机器上有PhpStorm 9.0.2,尝试使用PuTTY连接到另一个位置的远程CentOS 6,PHP 5.6 / xdebug 2.3.2机器 . 我在防火墙后面,但我不认为这是问题,因为我可以通过SSH连接没有问题,所以如果我可以正确配置它,隧道应该工作 . 我认为唯一的问题是我太笨了,无法弄清楚如何正确隧道 .
远程服务器的xdebug如何知道隧道?还是需要知道?我是否需要告诉该服务器有关隧道的信息?或者,只要我通过隧道连接,它是否已经知道它?但是如果知道的话,为什么不能在端口9000上连接xdebug?我的PhpStorm是否在端口9000上侦听,我的PuTTY会在那里发送数据吗?或者PhpStorm是否需要在端口22上侦听?
This tutorial我发现解释如何通过SSH隧道使用PhpStorm与远程服务器不起作用(单击以展开“在Windows上设置SSH隧道”部分 . 我的远程测试服务器上的Xdebug,我的PHP / CentOS Linux机器基于MySQL的开发网站坐着,无法连接到我在本地的Windows 8.1开发机器上的端口9000 .
我不完全理解隧道,也许我永远不会,因为我花了几个小时研究它并且尚未掌握它 . 我只是想调试我的应用程序 . :(
本教程指示您使用Putty打开与远程服务器的SSH连接,并配置连接的"tunnels"部分以在远程主机上指定端口9000,并为本地开发计算机指定 localhost:9000
. 我已经这样做了,一遍又一遍,但似乎没有人告诉我的远程服务器做什么 .
这是我的腻子设置:
XDebug日志继续显示它无法连接 .
I: Checking remote connect back address.
I: Remote address found, connecting to 173.12.34.123:9000.
E: Time-out connecting to client. :-(
Log closed at 2015-10-28 19:31:55
如何判断我的远程XDebug是否尝试在端口9000上直接连接到我的服务器,或者它是否正在使用 tunnel
通过端口22?
通过SSH连接哪个用户是否重要? root
或其他一些用户?如果我有另一个SSH会话同时连接到同一服务器并且没有通过隧道,这是否重要?
编辑:这是由 phpinfo()
输出的我的xdebug设置 . 它们反映了我当前网站的根目录 php.ini
( /home/testingsite/public_html/php.ini
) . 请注意 xdebug.remote_log
保存在 /home/testingsite/public_html/var/xdebug/log.txt
中
xdebug
xdebug support enabled
Version 2.3.2
IDE Key PHPSTORM
Supported protocols Revision
DBGp - Common DeBuGger Protocol $Revision: 1.145 $
Directive Local Value Master Value
xdebug.auto_trace Off Off
xdebug.cli_color 0 0
xdebug.collect_assignments Off Off
xdebug.collect_includes On On
xdebug.collect_params 0 0
xdebug.collect_return Off Off
xdebug.collect_vars Off Off
xdebug.coverage_enable On On
xdebug.default_enable On On
xdebug.dump.COOKIE no value no value
xdebug.dump.ENV no value no value
xdebug.dump.FILES no value no value
xdebug.dump.GET no value no value
xdebug.dump.POST no value no value
xdebug.dump.REQUEST no value no value
xdebug.dump.SERVER no value no value
xdebug.dump.SESSION no value no value
xdebug.dump_globals On On
xdebug.dump_once On On
xdebug.dump_undefined Off Off
xdebug.extended_info On On
xdebug.file_link_format no value no value
xdebug.force_display_errors Off Off
xdebug.force_error_reporting 0 0
xdebug.halt_level 0 0
xdebug.idekey PHPSTORM PHPSTORM
xdebug.max_nesting_level 256 256
xdebug.max_stack_frames -1 -1
xdebug.overload_var_dump On On
xdebug.profiler_aggregate Off Off
xdebug.profiler_append Off Off
xdebug.profiler_enable On On
xdebug.profiler_enable_trigger On On
xdebug.profiler_enable_trigger_value no value no value
xdebug.profiler_output_dir var/xdebug/profiles/ var/xdebug/profiles/
xdebug.profiler_output_name cachegrind.out.%p cachegrind.out.%p
xdebug.remote_autostart Off Off
xdebug.remote_connect_back On On
xdebug.remote_cookie_expire_time 3600 3600
xdebug.remote_enable On On
xdebug.remote_handler dbgp dbgp
xdebug.remote_host localhost localhost
xdebug.remote_log var/xdebug/log.txt var/xdebug/log.txt
xdebug.remote_mode req req
xdebug.remote_port 9000 9000
xdebug.scream Off Off
xdebug.show_exception_trace Off Off
xdebug.show_local_vars On On
xdebug.show_mem_delta Off Off
xdebug.trace_enable_trigger Off Off
xdebug.trace_enable_trigger_value no value no value
xdebug.trace_format 0 0
xdebug.trace_options 0 0
xdebug.trace_output_dir /tmp /tmp
xdebug.trace_output_name trace.%c trace.%c
xdebug.var_display_max_children 128 128
xdebug.var_display_max_data 512 512
xdebug.var_display_max_depth 3 3
1 回答
根据您的xdebug日志,您在设置中遇到错误而不是在SSH中 .
基于
phpinfo()
输出的xdebug部分,您需要设置xdebug.remote_connect_back = 0
(或off
- 含义相同) . 还要确保xdebug.remote_host = localhost
.使用当前设置,xdebug尝试连接回请求来自IP的TCP 9000,而对于SSH隧道工作,您需要将其连接到本地TCP 9000(并且SSH将此类连接隧道连接回本地计算机绕过防火墙/路由器) .