2013-08-30 40 views
12

Tình huống của tôi như sau:Làm thế nào để kích hoạt xdebug với nginx?

Tôi có máy ảo (máy chủ Ubuntu 13.04) với PHP 5.4.9-4ubuntu2.2, nginx/1.2.6, php5-fpm và Xdebug v2.2.1.

Tôi đang phát triển một ứng dụng bằng PhpStorm 6.0.3 (mà tôi triển khai trên máy ảo).

Vấn đề của tôi là, bất cứ khi nào tôi cố gắng bắt đầu một phiên gỡ lỗi, IDE không bao giờ nhận được yêu cầu kết nối từ máy chủ web (Và do đó, phiên không bao giờ bắt đầu).

Tôi đã xem xét rất nhiều đề xuất về cấu hình xdebug và không thấy gì hữu ích.

Điều gần đây tôi nhận ra là nếu tôi tự đặt cookie XDEBUG_SESSION thông qua trình duyệt (Cảm ơn FireCookie), tôi có thể gỡ lỗi ứng dụng của mình ... do đó, tôi đoán có điều gì đó khiến máy chủ web không gửi lại cookie cho khách hàng.

Vấn đề là, tôi đang sử dụng cùng một cấu hình IDE trong một dự án khác, được triển khai thành một máy ảo dựa trên CentOS khác (với lighttpd) và nó hoạt động tốt.

Tôi cố gắng để triển khai dự án hiện tại của tôi vào VM như vậy (thay đổi máy chủ web để nginx) và nó làm việc Allright (Đáng tiếc là tôi mất rằng VM và không thể kiểm tra cấu hình :().

... Vì vậy, đây là cấu hình của tôi 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; 
    } 

} 

cấu hình fpm (/etc/php5/fpm/pool.d/www.conf):

listen = /var/run/php5-fpm.sock 

xdebug.ini:

01.235.
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 

Bất kỳ ý tưởng nào cũng sẽ được đánh giá cao. Cảm ơn!

EDIT:

Một điều tôi đã cố gắng là để bắt đầu một phiên làm việc từ php và tôi thấy rằng cookie phiên được tạo ra mà không cần bất kỳ vấn đề ...

2 Edit:

Tôi nghĩ tôi tìm thấy nơi mà vấn đề là: URI.

Tôi đã viết một tập lệnh khác để thử các thông số cấu hình và nội dung (Một cách đơn giản hơn nhiều), và nó hoạt động ngay!

Vì vậy, cuối cùng tôi đã tìm ra sự cố là các tham số truy vấn (ví dụ: XDEBUG_SESSION_START=14845) không đạt được tập lệnh của tôi.

Sự cố là URI bắt đầu của tôi, có dạng /images/P/P1/P1010044-242x300.jpg. Thông qua một số cấu hình máy chủ ảo, tôi có thể định tuyến nó đến một cái gì đó giống như /dispatch.php/images/P/P1/P1010044-242x300.jpg và sử dụng phần còn lại của URI làm tham số. Vì vậy, ... Tôi đã không tìm thấy một giải pháp cho mỗi se, nhưng bây giờ tôi có một workaround khả thi (chỉ URL bắt đầu của tôi để /dispatch.php) mà sẽ làm điều đó trong một thời gian. Cảm ơn

Trả lời

6

Chỉ trong trường hợp có ai đó đọc nội dung này ... tôi hiểu rồi!

Vấn đề là cấu hình của nginx.Tôi vừa mới sao chép một mẫu từ nơi nào đó, nhưng bây giờ tôi đọc nhiều hơn một chút và phát hiện ra rằng cấu hình cụ thể của tôi là đơn giản hơn nhiều:

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; 
    } 

Trong trường hợp của tôi, mọi yêu cầu phải được chuyển tiếp đến phía trước điều khiển của tôi (sau đó phân tích URI), vì vậy nó thực sự đơn giản.

Các vấn đề liên quan