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; }
使用NetBeans结合xdebug调试nginx下的php程序
被这个问题搞的相当头大 个人一直认为任何事情一定有一个非常简单的解决办法 如果一个问题解决起来越来越复杂 那就是不是方法的问题 而是方向的问题
刚使用xdebug时就没有成功 暂时搁置了 今天特意再来看这个问题,终于很简单的得出解决办法
nginx下php的配置一般情况是这样的
这种配置要求你如此运行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端口 真是相当让人崩溃 思维僵化