您的位置:首页 > 编程语言 > Java开发

netbeans-xdebug 断点调试php

2015-06-29 17:17 656 查看

来自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调试php时,一直提示“等待NetBeans连接xdebug

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

php -m


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



意思就是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)



在这里面也有个[b]坑[/b]

就是调试器端口, 网上一般都是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 保持一致

不然同样提示:“[b]等待NetBeans连接xdebug”[/b]

NetBeans断点调试php

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









参考:

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

http://www.cnblogs.com/zhepama/p/3541683.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: