aze

导航

使用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端口 真是相当让人崩溃
思维僵化

posted on 2009-08-09 13:33  aze  阅读(2755)  评论(3编辑  收藏  举报