PhpStorm 10.0.3があり、リモートサーバー上で実行されるCLIスクリプトをデバッグしようとしました。XDebug with PhpStorm:CLIスクリプトのデバッグ、逆SSHトンネル経由の接続
ローカルマシンからリモートサーバーに逆SSHトンネルが設定されています。
リモートサーバーはXdebugは以下で構成されています
# /etc/php5/apache2/conf.d/20-xdebug.ini
# /etc/php5/cli/conf.d/20-xdebug.ini
zend_extension=xdebug.so
xdebug.remote_enable=true
xdebug.idekey=PHPSTORM
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
私はこのようなスクリプトを起動しよう:
php -dxdebug.remote_autostart=On /var/www/index.php
PhpStormデバッグタブのは、(時にはそれは灰色です)開かれたが、それを取得ファイルマッピングの修正を促さず、デバッグされたファイルを開かず、ブレークポイントの行を指しません。リモートサーバースクリプトの実行は、デバッグセッションを手動で終了するまでブロックされます。
私はGETパラメータを使用してApache2の上でデバッグ:
?XDEBUG_SESSION_START=1
デバッグが正常に動作し、私は、ファイルのマッピングを修正するように求められます。
なぜでしょうか?
私は以下勉強していましたが、それは私の問題を解決していません: https://confluence.jetbrains.com/display/PhpStorm/Debugging+PHP+CLI+scripts+with+PhpStorm (質問:私のスクリプトは、今ではデバッグがremote_autostart設定を設定せずに起動する必要があります必要がありますどのように緑のヒントでは、彼らはそれがオプションであると言う。)
と XDebug: how to debug remote console application? (Re:XDEBUG_CONFIG変数のremote_hostを自分のローカルコンピュータの外部IPに設定すると、コピーされたbashスニペットが正常に動作していないようです)私のローカルコンピュータは外部IP経由でアクセスできません。 SSHトンネル)
export XDEBUG_CONFIG="remote_host=$(echo $SSH_CLIENT | awk '{print $1}') idekey=PHPSTORM"
リモートサーバーでは、2つの異なるPHPがインストールされていて、cliで呼び出されたものと、apacheにバインドされているものがあります。 apacheで使用されるphp(php5_module 'libphp5.so')がcliのものと同じであることを確認し、最終的にはphp.iniファイルを修正してください。 php5は単なる例であり、あなた自身を適切なものとして使用してください。 – YvesLeBorg
そのホストへのSFTPアクセスはありますか?もしそうなら - あなたはIDEから直接SSH経由でそのようなCLIスクリプトを実行/デバッグすることができます(リモートPHPインタープリターとSFTPを使ってデプロイするだけです)。 https://confluence.jetbrains.com/display/PhpStorm/Remote+debugging+in+PhpStorm+via+SSH+tunnel – LazyOne
1)* "私のスクリプトは、remote_autostartの設定をしなくてもデバッグを開始するはずです。あなたのコードに 'xdebug_break();'を置くだけです(プログラムブレークポイントはデバッグセッションも開始します)。2)xdebug通信に9001ポートを使用してみてください。ケース - サーバー側のポート、ローカルのPhpStormはまだ9000を使用できます) - サーバー上のTCP 9000はすでにphp-fpm(そのツールの標準ポート)によって占有されている可能性があります。そのような場合、デバッグ接続はほぼ即座に終了します期待される出力(デバッグプロトコル)で応答しません。 – LazyOne