Netbeans + Xdebug + php无法正常工作

时间:2010-06-03 02:46:23

标签: php netbeans xdebug

我的netbeans使用xdebug不能使用断点,我的配置看起来是正确的,所以我第一次配置第一次停止调试,因为从那时起从未工作过,有人有这个问题吗?我的netbeans的版本是6.8,php的版本是2.5.2。

我的php.ini:

zend_extension_ts = d:\wamp\bin\php\php5.2.5\ext\php_xdebug-2.0.2-5.2.5.dll
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.idekey=netbeans-xdebug
xdebug.profiler_enable=1

8 个答案:

答案 0 :(得分:8)

在我的情况下,这行必须包含在php.ini中:

xdebug.remote_autostart=on

以下是XDebug的配置部分:

[xdebug]
xdebug.remote_enable = on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.idekey="netbeans-xdebug"
xdebug.remote_autostart=on
xdebug.profiler_enable = on
xdebug.profiler_enable_trigger = on
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "d:/wamp/tmp"

答案 1 :(得分:4)

xdebug的核对表:

  1. 检查phpinfo()中是否加载了xdebug,以及运行时值matches expected configuration
  2. xdebug.remote_enable is on
  3. xdebug.extended_info should be on让断点正常工作。
  4. xdebug.remote_port必须与ide and unused相同。
  5. xdebug.remote_handlerdbgp
  6. 如果xdebug.idekey已启用,则
  7. xdebug.remote_autostart应设置为same as ide's key
  8. 有时将xdebug.remote_host设置为Intranet IP或计算机名称而不是本地IP 127.0.0.1会有所帮助。 PHP必须allowed by Firewall才能连接到此主机和端口。
  9. xdebug.remote_log设置为文件有助于检查错误。调试工作后禁用日志。
  10. 示例配置

    [xdebug]
    xdebug.extended_info=on
    xdebug.remote_enable=on
    xdebug.remote_handler=dbgp
    xdebug.remote_host=localhost
    xdebug.remote_port=9000
    xdebug.remote_autostart=on
    xdebug.idekey="netbeans-xdebug"
    

    NetBeans清单:

    1. 防火墙必须允许Netbeans侦听与已配置主机的连接。
    2. 工具 - >选项 - > PHP - >调试,检查端口。如果启用了xdebug.remote_autostart,还要检查会话ID。
    3. 项目类型必须是PHP。
    4. 项目属性 - >来源,web root必须正确。
    5. 项目属性 - >运行配置,索引文件需要是一个php(或空)才能让Ctrl + F5工作。
    6. 项目属性 - >运行配置 - >高级,调试网址should be“默认”或“每次询问”。
    7. 项目属性 - >运行配置 - >高级,path mapping必须正确。 (例如,如果没有映射,则为空)
    8. (大多数默认选项都是开箱即用的,所以如果你绝望,请尝试删除并重新创建项目。)

      错误说明,在PHP 5.5和xdebug 2.2上测试:

      1. PHP output_buffering不需要关闭。 (但可能有助于调试)
      2. 可以加载OPCache(Zend Cache)模块。
      3. xdebug.profiler_enable可以启用。
      4. 如果您发现新内容,请编辑此答案。

答案 2 :(得分:1)

  • 检查您的PHP版本是否具有正确版本的Xdebug(包括线程安全/非线程安全和64位/ 32位)。
  • 在某些较新版本的PHP中,无论您是否拥有TS版本的Xdebug,都需要使用zend_extension,而不是zend_extension_ts。

答案 3 :(得分:1)

(由于评论中的格式无法正常工作,我正在回答答案)

同样的事情发生在我身上:工作一次然后停止了。但是,我在配置中达到了一个点,它开始工作没有问题,我可以分享。

首先,我移动了离线立方体加载器的php.ini:

[PHP]
zend_extension=/Applications/MAMP/bin/php5/zend/lib/ioncube_loader_dar_5.2.so

然后我将这些行放在xdebug配置中:

[xdebug]
zend_extension="/Applications/MAMP/bin/php5/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"
xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000

并评论了关于Zend Optimizer的所有内容

[Zend]
;zend_optimizer.optimization_level=15
;zend_extension_manager.optimizer=/Applications/MAMP/bin/php5/zend/lib/Optimizer-3.3.3
;zend_optimizer.version=3.3.3

我在MAMP工作,这就是为什么我的库的路径被引用到我的MAMP文件夹。

祝你好运

答案 4 :(得分:1)

如果您仍然被卡住,可以尝试以下方法:

  • 通过向导(http://www.xdebug.org/wizard.php)下载新版本的xdebug,如果您按照说明操作,也许您会很幸运。
  • 关闭防火墙可能会有所帮助。
  • 在netbeans中使用不同的端口,例如在我的情况下,在netbeans中使用 9001 ,在xdebug中使用 9000
  • 添加到 php.ini 文件:xdebug.idekey=netbeans-xdebug
  • 找出您是否有 xdebug.ini 文件,并将xdebug相关的php.ini行添加到该文件中。

始终确保重新启动Apache服务以测试所有内容。

答案 5 :(得分:1)

zend_extension = "C:\xampp\php\ext\php_xdebug-2.2.3-5.4-vc9.dll"xdebug.remote_enable = 1 xdebug.remote_handler = "dbgp"xdebug.remote_host = "localhost" xdebug.remote_port="9000" xdebug.remote_mode=req xdebug.trace_output_dir = "C:\xampp\tmp" xdebug.idekey="netbeans-xdebug"

这对我有用..

答案 6 :(得分:1)

以下是我能够使用多个PHP-FPM自制软件安装工作的方法。

我将这篇优秀的文章用于多个安装:

https://echo.co/blog/os-x-1010-yosemite-local-development-environment-apache-php-and-mysql-homebrew

在该帖子的评论中,您会看到建议如何安装xdebug,底线:

brew install php56-xdebug

您必须为已安装的每个PHP版本安装xdebug。 Homebrew会为你安装的每个版本的php制作一个xdebug.ini文件。每个人都有一条路径:

/usr/local/etc/php/<version # i.e. "5.6">/conf.d/ext-xdebug.ini

本文安装在xdebug的默认端口(9000)上运行的DNSMasq,因此您需要将xdebug端口更改为其他端口(9001正常工作。)

编辑上面提到的ext-xdebug.ini文件(如果你安装了多个版本的php,则编译文件。)这对我有用:

[xdebug]
zend_extension="/usr/local/opt/php56-xdebug/xdebug.so"

; General config
; Dumps local variables on exception
xdebug.show_local_vars=On
; Dump server variables
xdebug.dump.SERVER=*
; Dump global variables
xdebug.dump_globals=On
xdebug.collect_params=4;

; Tracing
;xdebug.auto_trace=On
;xdebug.trace_output_dir= /opt/local/php_traces/
xdebug.show_mem_delta=On
xdebug.collect_return=On


; Debugging. You might need to specify your host with some additional options
xdebug.remote_enable=1
: from http://devzone.zend.com/1147/debugging-php-applications-with-xdebug/
xdebug.remote_host="localhost"
xdebug.remote_port=9001
xdebug.remote_handler="dbgp"

前两行是原始自制文件中的所有内容。

顺便说一句 - 当我安装了多个PHP版本时,这个ext-xdebug.ini文件只是为我安装的第一个PHP版本创建的。我只是将此文件复制到其他PHP版本位置,并更改了第2行中路径的“php56-xdebug”部分以反映正确的php版本。

注意“xdebug.remote_port = 9001”

然后在Netbeans中(我使用的是8.02 Mac osX10.10.3)我使用以下设置。 转到首选项 - &gt; PHP-&gt;调试

调试器端口: 9001

停在第一线:( 未选中

手表&amp;气球评估:( 已检查 - 有警告,但对我来说效果很好。)

另外值得注意的是,为了让xdebug显示使用phpinfo()(或命令行php -i),我需要重启apache:

launchctl unload -Fw ~/Library/LaunchAgents/homebrew.mxcl.php56.plist

sudo apachectl restart

launchctl load -Fw ~/Library/LaunchAgents/homebrew.mxcl.php56.plist

出于某种原因,我的设置要求我每次启动时运行它。有点痛苦,但我将它合并到一个shell命令中,以便在版本之间轻松切换。

还有一个提示:brew信息的一部分php56说:

OS X 10.8 and newer come with php-fpm pre-installed, to ensure you are using
the brew version you need to make sure /usr/local/sbin is before /usr/sbin
in your PATH:

  PATH="/usr/local/sbin:$PATH"

在我将此添加到我的.profile_bash文件之前,我对每个版本的php-fpm.conf文件所做的更改无法识别。其他一切似乎都有效,所以令人困惑。

希望这能节省别人的时间和时间。麻烦。

答案 7 :(得分:0)

在我的情况下-主机位于另一台服务器上,即Net-beans 11-我需要将终端打开到remotehost

窗口-> IDE工具->终端->远程终端

P.S。如果您在该终端中键入 export XDEBUG_CONFIG =“ idekey = netbeans-xdebug” ,并开始调试会话,则可以调试控制台脚本