2016-10-11 15 views
0

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デバッグタブのは、(時にはそれは灰色です)開かれたが、それを取得ファイルマッピングの修正を促さず、デバッグされたファイルを開かず、ブレークポイントの行を指しません。リモートサーバースクリプトの実行は、デバッグセッションを手動で終了するまでブロックされます。 enter image description here

私は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" 
+0

リモートサーバーでは、2つの異なるPHPがインストールされていて、cliで呼び出されたものと、apacheにバインドされているものがあります。 apacheで使用されるphp(php5_module 'libphp5.so')がcliのものと同じであることを確認し、最終的にはphp.iniファイルを修正してください。 php5は単なる例であり、あなた自身を適切なものとして使用してください。 – YvesLeBorg

+0

そのホストへのSFTPアクセスはありますか?もしそうなら - あなたはIDEから直接SSH経由でそのようなCLIスクリプトを実行/デバッグすることができます(リモートPHPインタープリターとSFTPを使ってデプロイするだけです)。 https://confluence.jetbrains.com/display/PhpStorm/Remote+debugging+in+PhpStorm+via+SSH+tunnel – LazyOne

+1

1)* "私のスクリプトは、remote_autostartの設定をしなくてもデバッグを開始するはずです。あなたのコードに 'xdebug_break();'を置くだけです(プログラムブレークポイントはデバッグセッションも開始します)。2)xdebug通信に9001ポートを使用してみてください。ケース - サーバー側のポート、ローカルのPhpStormはまだ9000を使用できます) - サーバー上のTCP 9000はすでにphp-fpm(そのツールの標準ポート)によって占有されている可能性があります。そのような場合、デバッグ接続はほぼ即座に終了します期待される出力(デバッグプロトコル)で応答しません。 – LazyOne

答えて

1

実際には2つの問題がありました。 @LazyOneコメントのように、PHP5-FPMサービスとのポート衝突がありました。私の場合、クライアントのサーバー構成はFPMを使用しないため、この機能は無効にしています。

私はまた、リモートホスト上PHP_IDE_CONFIG変数をエクスポートする必要がありました:ホストがPHPStorm側で設定されていることを

export PHP_IDE_CONFIG="serverName=serverNameInPHPStorm" 

(設定/設定|言語&フレームワーク| PHP |サーバ)。ローカルの/ devマシンとリモートの間で異なるため、リモートプロジェクトのパスの場所にルートプロジェクトフォルダをマップする必要もありました。

関連する問題