Моя ситуация такова:
У меня есть VM (сервер Ubuntu 13.04) с PHP 5.4.9-4ubuntu2.2, nginx/1.2.6, php5-fpm и Xdebug v2.2.1.
Я разрабатываю приложение, используя PhpStorm 6.0.3 (который я развертываю на виртуальной машине).
Моя проблема в том, что всякий раз, когда я пытаюсь запустить сеанс отладки, среда IDE никогда не получает запрос на соединение с веб-сервера (и, таким образом, сеанс никогда не запускается).
Я просмотрел множество рекомендаций по конфигурации xdebug и не нашел ничего полезного.
То, что я недавно понял, заключается в том, что если я сам установил cookie XDEBUG_SESSION через браузер (спасибо FireCookie), я могу отладить мое приложение... так что я думаю, что есть что-то, что веб-сервер отсылает cookie обратно клиенту.
Дело в том, что я использую одну и ту же конфигурацию IDE в другом проекте, который развертывается в другой виртуальной машине на базе CentOS (с 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 config (/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
Любая идея будет высоко оценена. Спасибо!
EDIT:
Еще одна вещь, которую я пробовал, - начать сеанс с php, и я увидел, что cookie сеанса был создан без проблем...
2nd Edit:
Я думаю, что нашел, где проблема: URI.
Я написал еще один script, чтобы попробовать параметры конфигурации и прочее (намного проще), и это сработало!
Итак, в конце концов, я решил, что проблема заключается в том, что параметры запроса (т.е. XDEBUG_SESSION_START=14845
) не достигли моего script.
Проблема заключается в моем исходном URI, который имеет форму /images/P/P1/P1010044-242x300.jpg
. Через некоторую конфигурацию виртуального хоста я должен был бы перенаправить его на что-то вроде /dispatch.php/images/P/P1/P1010044-242x300.jpg
и использовать остальную часть URI в качестве параметров. Итак... Я не нашел решения как такового, но теперь у меня есть жизнеспособное решение (указывая мой начальный URL-адрес на /dispatch.php
), который будет делать это некоторое время. Благодаря