netbeans-xdebug 断点调试php

来自NetBeans官网的帮助文档: 

https://netbeans.org/kb/docs/php/debugging_zh_CN.html

但具体问题,我们还是要说下

准备工作

本地部署的server环境

下载与php版本对应的xdebug http://www.xdebug.org

配置php

下载xdebug后,在php.ini 中配置xdebug

zend_extension=php_xdebug-2.4.1-7.0-vc14-nts.dll

xdebug.remote_port=9001
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_autostart=1
xdebug.idekey="netbeans-xdebug"

这一步非常重要,因为坑就在这,当配置中扩展为如下的配置时,phpinfo 显示是正确的

extension=php_xdebug-2.4.1-7.0-vc14-nts.dll

netbeans-xdebug 断点调试php

但当我们NetBeans调试php时,一直提示“等待NetBeans连接xdebug

所以,我们要使用命令行查看已经加载的模块,查看xdebug是否正确加载

 php -m

当提示:PHP Warning:  Xdebug MUST be loaded as a Zend extension in Unknown on line 0

netbeans-xdebug 断点调试php

意思就是xdebug必须加载到zend modules的扩展中

extension意为基于php引擎的扩展

zend_extension意为基于zend引擎的扩展

所以 正确的方法是

zend_extension=php_xdebug-2.4.1-7.0-vc14-nts.dll

 在php.ini 中还要设置

output_buffering = Off

配置NetBeans

在NetBeans的 工具-选择-php 中配置  (本人NetBeans版本8.0.2)

netbeans-xdebug 断点调试php

在这里面也有个

就是调试器端口, 网上一般都是9000,但是有没有考虑用Nginx的感受,在用nginx作为服务器代理的时候,nginx一般使用的就是9000

server {
        listen       80;
        server_name  web.com;
        root   "F:/web";
        location / {
            index  index.html index.htm index.php;
            autoindex  on;
            if (!-e $request_filename){
                rewrite ^/(.*) /index.php?r=$1 last;
            }
        }
        location ~ .php(.*)$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_split_path_info  ^((?U).+.php)(/?.+)$;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  PATH_INFO  $fastcgi_path_info;
            fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
            include        fastcgi_params;
        }
}

这就是为什么我们在配置php的xdebug时候使用9001端口, (php.ini 中的端口要与NetBeans中的调试器端口一致)

会话ID 与 xdebug.idekey 保持一致

不然同样提示:等待NetBeans连接xdebug

NetBeans断点调试php

这一步应该不用多说,只要用过NetBeans就知道如何调试,要说明一点,按F7 是断点的一步步调试

netbeans-xdebug 断点调试php

netbeans-xdebug 断点调试php

netbeans-xdebug 断点调试php

netbeans-xdebug 断点调试php

参考: 

http://blog.csdn.net/21aspnet/article/details/47756651

http://www.cnblogs.com/zhepama/p/3541683.html