Jak włączyć xdebug za pomocą nginx?
Moja sytuacja jest następująca:
Mam maszynę wirtualną (serwer Ubuntu 13.04) z PHP 5.4.9-4ubuntu2.2, nginx / 1.2.6, php5-fpm i Xdebug v2.2.1.
Opracowuję aplikację wykorzystującą PhpStorm 6.0.3 (którą wdrażam na maszynie wirtualnej).
Mój problem polega na tym, że gdy próbuję uruchomić sesję debugowania, IDE nigdy nie pobiera żądania połączenia z serwera WWW (a więc sesja nigdy się nie uruchamia).
Przejrzałem wiele zaleceń dotyczących konfiguracji xdebug i nie znalazłem niczego użytecznego.
Ostatnio zdałem sobie sprawę, że jeśli sam ustawię plik cookie XDEBUG_SESSION za pomocą przeglądarki (Thanks FireCookie), mogę debugować moją aplikację ... więc zgaduję, że jest coś, co powstrzymuje serwer od wysłania cookie z powrotem do klienta.
Rzecz w tym, że używam tej samej konfiguracji IDE w innym projekcie, który jest wdrażany w innej maszynie wirtualnej opartej na CentOS (z lighttpd) i działa dobrze.
Próbowałem wdrożyć mój obecny projekt do takiej maszyny wirtualnej (zmieniając serwer WWW na NginX) i wszystko działało poprawnie (Niestety straciłem tę maszynę wirtualną i nie mogę sprawdzić konfiguracji :().
Więc ... oto moja konfiguracja 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
Każdy pomysł zostanie bardzo doceniony. Dzięki!
EDYTOWAĆ:
Inną rzeczą, którą próbowałem, było rozpoczęcie sesji od php i zobaczyłem, że plik cookie sesji został utworzony bez problemu ...
2. edycja:
Myślę, że znalazłem tam problem: URI.
Napisałem inny skrypt, aby wypróbować parametry konfiguracyjne i rzeczy (znacznie prostsze) i działało poprawnie!
Ostatecznie pomyślałem, że problem polega na tym, że parametry zapytania (tj .:XDEBUG_SESSION_START=14845
) nie dotarły do mojego scenariusza.
Problemem jest mój początkowy URI, który ma postać/images/P/P1/P1010044-242x300.jpg
. Poprzez konfigurację wirtualnego hosta powinienem być w stanie skierować go do czegoś podobnego/dispatch.php/images/P/P1/P1010044-242x300.jpg
i użyj pozostałych URI jako parametrów. Więc ... Nie znalazłem rozwiązania jako takiego, ale teraz mam realne obejście (wskazując mój początkowy adres URL na/dispatch.php
), który zrobi to przez chwilę. Dzięki