使用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端口 真是相当让人崩溃
思维僵化
个人一直认为任何事情一定有一个非常简单的解决办法
如果一个问题解决起来越来越复杂
那就是不是方法的问题 而是方向的问题
刚使用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端口 真是相当让人崩溃
思维僵化