過去に、私は自分のウェブサイトの開発にapache+mod_php +xdebug+netbeans を使用しました (サーバーは私のローカル マシンで、Debian Squeeze を実行しています)。xdebug は期待どおりに機能し、デバッグ セッションはいつでも開始および停止できました。必要なときに。しかし、nginx+php_fpm +xdebug+netbeans に移行したとき、デバッグでいくつかの問題が発生しました。
- デバッグ セッションが非常に長くなる可能性があり(30 秒をはるかに超える)、nginx がそれほど長く待機できなかったようで、「504 ゲートウェイ タイムアウト エラー」が表示されます。これを解決するために多くの推奨事項を試しましたが、うまくいきません。とはいえ、デバッグセッション自体は実行され続けているため、私にとってはそれほど重要ではなく、少し不快なことです。
- 私のデバッグ セッションは 1 回しか実行できなかったので、それを停止して再度デバッグを開始しようとすると、netbeans は xdebug からの接続を受け入れることができませんでした (「xdebug 接続を待機しています」と書かれ、永遠に続きます)。netbeans の再起動後、デバッグ セッションを正常に再開できました。
- 場合によっては、私が理解できなかったのですが、デバッグは「すべての php スクリプトに対してオン」になっており、他のスクリプトの実行を妨げています。たとえば、Web サイトのhttp://mysite.local/index.phpでデバッグ セッションを開始し、それを操作します。しばらくすると、管理者 (intranet.local/adminer.php に配置) が実行されず、ブラウザがしばらくの間ページを読み込もうとし、「504 ゲートウェイ タイムアウト エラー」が表示されることに気付きました。この動作が見られた場合、netbeans で xdebug デバッグ セッションを停止するだけで、他のすべてのスクリプトが正常に動作し始めます。
さて、この質問を書いているときにいくつかの調査を行ったところ、デバッグセッションを数秒間開始した後、停止してから再度開始すると、正常に開始されることがわかりました。アクティブなデバッグをしばらく行った後に問題が発生したようです。
私のシステムとアプリ: Debian squeeze:2.6.32-5-686 Nginx: 1.4.1 (dotdeb リポジトリから) php5-fpm: 5.3.26-1~d (dotdeb リポジトリから) php5-xdebug: 5.3.26-1 ~d (dotdeb リポジトリから) netbeans: 7.3
私の設定:
- nginx 基本設定: https://gist.github.com/MihanEntalpo/6229801
- nginx ウェブサイト構成ファイル: https://gist.github.com/MihanEntalpo/6229781
- fastcgi_params ファイル: https://gist.github.com/MihanEntalpo/d93fd4105573e1eda56f
- php-fpm プール構成ファイル: https://gist.github.com/MihanEntalpo/6229820
- php-fpm xdebug 構成ファイル: https://gist.github.com/MihanEntalpo/6229836
- netbeans: オプション、これは apache サーバーとまったく同じでした:
- 最初の行で改行 = オフ
- ポップアップ ウィンドウでの評価 = オン
- 要求元 URL を表示 = オン
- ポート = 9000
nginx のエラー ログ ファイルに記録します。スクリプトがデバッグされるのを待つことができない場合、または前述の問題 #3 によってロックされた他のスクリプトが待機できない場合:
2013/08/14 14:40:16 [エラー] 4822#0: *111 アップストリーム タイムアウト (110: 接続タイムアウト) アップストリームからの応答ヘッダーの読み取り中に、クライアント: 192.168.100.1、サーバー: intranet.local、要求: "GET /adminer.php?username=root&db=devel&table=user HTTP/1.1", アップストリーム: "fastcgi://127.0.0.1:9999", ホスト: "intranet.local", リファラー: " https://intranet. local/adminer.php?username=root&db=devel "
php-fpm のログにはエラー メッセージが含まれていません...
私は自分の問題で誰かの邪魔をするのが好きではなく、常に自分で解決しようとしています。しかし、この場合、私は運が悪いために数ヶ月間これと戦っています...誰かがこの問題に直面した場合、またはnginx + php-fpm + xdebug + netbeansで使用するための作業構成がある場合-私を助けてください:)