我知道这个问题已经问过无数次了,因为我已经浏览了论坛并阅读了很多这样的帖子。然而,这里的失败似乎是基于如此多的变量,以至于解决方案对问题来说是相当特定的,并且没有什么能真正解决我的问题。我觉得我需要你们这些更有经验的球员的一些指导。
发生了什么:
在NetBeans:
与我的本地沙箱项目加载,我点击调试项目,index.php页面在Chrome中打开,代码一直运行到结束,不管断点,NetBeans挂着说"等待连接(xdebug)"…
在上面,我可以看到:
aaron@aaron-aspire-v5:/var/log/apache2$ netstat -an | grep 9001
tcp6 0 0 :::9001 :::* LISTEN
:
- 我加载
://localhost/html/sandbox/index.php?XDEBUG_SESSION_START=netbeans-xdebug
在Chrome 我在vim中加载相同的文件 - 我按下F5,看到消息
waiting for a new connection on port 9001 for 10 seconds...
so far so good。 - 我在web浏览器中重新加载页面,没有任何反应
vim
连接超时在上面的过程中,在超时之前,我可以看到:
aaron@aaron-aspire-v5:/var/log/apache2$ netstat -an | grep 9001
tcp 0 0 0.0.0.0:9001 0.0.0.0:* LISTEN
我得到了什么:
- 运行Ubuntu 13.10
- 运行Apache 2.4.6
- Xdebug通过pecl 安装
我编辑了/etc/php5/cli/php.ini和/etc/php5/apache2/php.ini文件,并添加了以下内容:
zend_extension =/usr/lib/php5/20121212/xdebug.soxdebug.default_enable = 1xdebug.remote_enable = 1xdebug.remote_handler = dbgpxdebug.remote_mode =代表xdebug.remote_host = localhostxdebug.remote_port = 9001xdebug.remote_log =/var/log/输入/xdebug.log
phpinfo()现在返回以下关于xdebug:
xdebug
xdebug support => enabled
Version => 2.2.5
IDE Key => aaron
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.idekey => no value => no value
xdebug.max_nesting_level => 100 => 100
xdebug.overload_var_dump => On => On
xdebug.profiler_aggregate => Off => Off
xdebug.profiler_append => Off => Off
xdebug.profiler_enable => Off => Off
xdebug.profiler_enable_trigger => Off => Off
xdebug.profiler_output_dir => /tmp => /tmp
xdebug.profiler_output_name => cachegrind.out.%p => cachegrind.out.%p
xdebug.remote_autostart => Off => Off
xdebug.remote_connect_back => Off => Off
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/log/apache2/xdebug.log => /var/log/apache2/xdebug.log
xdebug.remote_mode => rep => rep
xdebug.remote_port => 9001 => 9001
xdebug.scream => Off => Off
xdebug.show_exception_trace => Off => Off
xdebug.show_local_vars => Off => Off
xdebug.show_mem_delta => Off => Off
xdebug.trace_enable_trigger => Off => Off
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
- For NetBeans 7.4:在工具=>选项=>一般我使用"无代理";测试连接返回成功;在Tools => Options => PHP => Debugging下,我有调试器端口:9001,会话ID: netbeans-xdebug,最大数据长度:2048,停在第一行:True,所有其他选项未选中。
- 调试器。Vim v1.0.2(和debugger.py):两者都是调试器。vim和debugger.py被添加到我的/usr/share/vim/vim74/plugins文件夹,
let g:debuggerPort = 9001
被添加到我的。vimrc文件,php_value xdebug.remote_port 9001
被添加到我的apache2.conf文件。
任何帮助都是非常感激的!
您没有设置xdebug.idekey => no value
xdebug.idekey => no value => no value
也xdebug.remote_autostart => Off => O
是错误的。
设置为
; idekey can be just about anything, but the value in php.ini needs
; to match the value used in the environment that launches php.
xdebug.idekey=vim_session
和
; We have to turn on remote_autostart when running php from
; cli. That's probably a good reason to keep the cli and apache
; versions of php.ini distinct.
xdebug.remote_autostart=1
您应该在屏幕底部看到类似waiting for a new connection on port 9000 for 5 seconds…
的消息。
现在您有五秒钟的时间来刷新PHP页面。
这将在调试器和客户端之间创建连接。现在您正在调试。按照"帮助"窗口中的说明进入、切换和退出代码。按F5运行代码,直到断点(可以使用:BP设置)
也看看这个答案PHP调试器为Vim
让phpinfo再次运行,看看我提到的值现在是否正确?然后看看还有哪些php配置文件还在使用,看看内容。
让服务器连接到另一个端口有点棘手。您需要为每个用户设置一个自定义php.ini值(xdebug.remote_port) 。如果你在Apache中使用VirtualHost,效果最好。只需将以下行添加到httpd.conf的VirtualHost部分:
php_value xdebug.remote_port 9001
现在重启Apache,如果你使用VirtualHost和vi用户,那么它们应该连接成功。