2013-08-30 7 views
12

私の状況は以下の通りです:nginxでxdebugを有効にするには?

私はPHP 5.4.9-4ubuntu2.2、nginxの/ 1.2.6とVM(Ubuntuのサーバ13.04)、のphp5-FPMとはXdebug v2.2.1を持っています。

私はPhpStorm 6.0.3(私はVMにデプロイします)を使ってアプリケーションを開発しています。

私の問題は、デバッグセッションを開始しようとするたびに、IDEはWebサーバーから接続要求を取得しない(したがって、セッションが開始されない)ことです。

私はxdebugの設定に関する多くの推奨事項を見て、役に立たないものは何も見つかりませんでした。

私はXDEBUG_SESSIONクッキーをブラウザ(Thanks FireCookie)で自分で設定すると、私のアプリをデバッグすることができます...私の推測では、ウェブサーバーがクッキーをクライアントに送り返すことを防ぐものがあります。

私は別のプロジェクトで同じIDE設定を使用していますが、別のCentOSベースのVM(lighttpdを使用)にデプロイされています。うまく動作します。

は、私は(nginxのにウェブサーバを変更する)ようにVMに私の現在のプロジェクトを展開しようとしましたが、それはオールライト働いていた(残念ながら、私はそのVMを失い、設定を:(チェックすることはできません)。だから、

...ここに私の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からセッションを開始したと私はセッションクッキーが問題なく作成されたことがわかりました...

第二編集:

私は思うI問題がどこにあるのかを知る:URI。

私は設定パラメータやものを試してみるために別のスクリプトを書いています(ずっと簡単です)。

結局のところ、クエリパラメータ(つまり、XDEBUG_SESSION_START=14845)がスクリプトに届かないという問題が発生したと思いました。

問題は私の開始URIであり、形式は/images/P/P1/P1010044-242x300.jpgです。いくつかの仮想ホスト構成を通して、それを/dispatch.php/images/P/P1/P1010044-242x300.jpgのようなものにルーティングし、残りのURIをパラメータとして使用できるはずです。だから...私は解決策自体を見つけられませんでしたが、今は実行可能な回避策(私の開始URLを/dispatch.phpに指しています)がしばらくそれを行います。ありがとう

答えて

6

これを読んでいる人がいる場合は...私はそれを持っています!

問題は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; 
    } 

私の場合は、すべての要求は(私のフロントコントローラに転送する必要がありますそれはURIを分析します)、本当にシンプルでした。

関連する問題