15

私の状況は次のとおりです。

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 にデプロイ) を使用してアプリを開発しています。

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

xdebug 構成に関する多くの推奨事項を調べましたが、有用なものは何も見つかりませんでした。

私が最近気付いたのは、ブラウザーを介して自分で XDEBUG_SESSION Cookie を設定すると (FireCookie に感謝)、アプリをデバッグできるということです。

問題は、別のプロジェクトで同じ IDE 構成を使用していて、別の CentOS ベースの VM (lighttpd を使用) にデプロイされていることです。問題なく動作します。

現在のプロジェクトをそのような VM (Web サーバーを NginX に変更) にデプロイしようとしましたが、問題なく動作しました (残念ながら、その 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

どんなアイデアでも大歓迎です。ありがとう!

編集:

私が試したもう1つのことは、phpからセッションを開始することであり、セッションCookieが問題なく作成されたことを確認しました...

2回目の編集:

問題がどこにあるかを見つけたと思います:URI。

構成パラメーターなどを試すために別のスクリプトを作成しました (はるかに単純なもの)。

したがって、最終的に問題は、クエリパラメーター (つまり:)XDEBUG_SESSION_START=14845がスクリプトに到達していないことであると考えました。

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

4

1 に答える 1

10

誰かがこれを読んでいる場合に備えて...私はそれを手に入れました!

問題は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 を分析する) に転送する必要があるため、非常に簡単でした。

于 2013-09-02T19:16:51.573 に答える