使用NetBeans结合xdebug调试nginx下的php程序

被这个问题搞的相当头大

个人一直认为任何事情一定有一个非常简单的解决办法

如果一个问题解决起来越来越复杂

那就是不是方法的问题 而是方向的问题

刚使用xdebug时就没有成功 暂时搁置了

今天特意再来看这个问题,终于很简单的得出解决办法

nginx下php的配置一般情况是这样的

location ~ \.php$ {

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

这种配置要求你如此运行php

php-cgi.exe -b 127.0.0.1:9000 -q

就是说nginx把对php的请求转发到127.0.0.1的9000端口去

而php正在9000端口等待 于是拿个正着 然后处理php请求

而xdebug呢?(这里暂且不说NetBeans了 因为在这个问题中NetBeans说不上是一个因素)

通常情况下你能找到的xdebug都是这样的

zend_extension_ts="path\to\php_xdebug-2.0.4-5.2.8.dll"

xdebug.remote_enable=on

xdebug.remote_handler=dbgp

xdebug.remote_host=127.0.0.1

xdebug.remote_port=9000

说明了什么?说明xdebug要去蹲在9000端口转发请求

开什么玩笑 php已经占据了9000端口 你xdebug又要来占取9000还要跟php打招呼...

于是你就会发现xdebug会一直无反应,然后呢?php进程也崩溃了

这也就是NetBeans里一直停在netbeans-xdebug正在连接的原因

而解决办法呢?自然也就很简单了

在注册xdebug的时候把端口改成非9000

xdebug.remote_port=9001

简单吧,可惜此前在baidu,google寻了大量的文章来解决这个问题

却没有发现任何的xdebug配置使用了非9000端口 真是相当让人崩溃

思维僵化