我的情况如下:
我有一个带有 PHP 5.4.9-4ubuntu2.2、nginx/1.2.6、php5-fpm 和 Xdebug v2.2.1 的 VM(Ubuntu 服务器 13.04)。
我正在使用 PhpStorm 6.0.3(我部署在 VM 上)开发应用程序。
我的问题是,每当我尝试启动调试 session 时,IDE 永远不会从网络服务器获取连接请求(因此, session 永远不会启动)。
我查看了很多关于 xdebug 配置的建议,但没有发现任何有用的东西。
我最近意识到,如果我自己通过浏览器设置 XDEBUG_SESSION cookie(感谢 FireCookie),我可以调试我的应用程序......所以我猜是有什么东西可以阻止网络服务器将 cookie 发送回客户端。
问题是,我在不同的项目中使用相同的 IDE 配置,该配置部署到不同的基于 CentOS 的 VM(使用 lighttpd)中,并且运行良好。
我试图将我当前的项目部署到这样的虚拟机中(将网络服务器更改为 NginX)并且它工作正常(不幸的是我丢失了那个虚拟机并且无法检查配置 :()。
所以...这是我的 NginX 配置:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name localhost;
location / {
try_files $uri $uri/ /dispatch.php;
}
#
location ~ \.php$ {
root /var/www/bresson/web;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index dispatch.php;
fastcgi_param SCRIPT_FILENAME /var/www/$fastcgi_script_name;
include fastcgi_params;
#fastcgi_pass 127.0.0.1:9009;
}
}
fpm 配置(/etc/php5/fpm/pool.d/www.conf):
listen = /var/run/php5-fpm.sock
xdebug.ini:
zend_extension=/usr/lib/php5/20100525/xdebug.so
xdebug.remote_port=9000
xdebug.remote_enable=On
xdebug.remote_connect_back=On
xdebug.remote_log=/var/log/xdebug.log
任何想法将不胜感激。谢谢!
编辑:
我尝试的另一件事是从 php 开始一个 session ,我看到 session cookie 的创建没有任何问题......
第二次编辑:
我想我找到了问题所在:URI。
我写了另一个脚本来尝试配置参数和东西(一个更简单的),它工作正常!。
所以最终我发现问题是查询参数(即:
XDEBUG_SESSION_START=14845
)没有到达我的脚本。问题是我的起始 URI,格式为
/images/P/P1/P1010044-242x300.jpg
.通过一些虚拟主机配置,我应该能够将它路由到类似 /dispatch.php/images/P/P1/P1010044-242x300.jpg
的东西。 ,并使用 URI 的其余部分作为参数。所以......我本身还没有找到解决方案,但现在我有一个可行的解决方法(将我的起始 URL 指向 /dispatch.php
),它会持续一段时间。谢谢
最佳答案
以防万一有人在读这个……我明白了!
问题是nginx的配置。我刚刚从某个地方复制了一个模板,但现在我读了更多,发现我的特定配置要简单得多:
location / {
root /var/www/bresson/web/;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/dispatch.php;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
就我而言,每个请求都必须转发到我的前端 Controller (然后分析 URI),所以这真的很简单。
关于nginx - 如何使用 nginx 启用 xdebug?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18540463/