web-dev-qa-db-ja.com

XdebugはDrushコマンドでトリガーできますか?

drush siを使用してサイトをインストールすると、機能モジュールとインストールプロファイルで問題が発生します。機能の問題キューにはおそらく関連する問題がいくつかありますが、適切な解決策はありません。興味深い部分(いくつかの問題で言及されています)は、ブラウザーを介してサイトをインストールすると正常に動作しますが、drush siでインストールすると失敗します。

何が問題かはわかりますが、確認する必要があります。私がそれを確認することを考えることができる唯一の方法は、デバッガーでコードをステップ実行することです(Xdebugは私が設定したものです)。それで、Drushで実行されたコマンドからXdebugをトリガーすることは可能ですか?具体的には、drush siを実行したときにXdebugを起動させることができますか?

8
Chaulky

あなたはdrushではあなたが(ほとんどの場合)cliにいることを覚えておく必要があるので、これは役立つはずです:

https://stackoverflow.com/questions/1947395/how-can-i-debug-a-php-cli-script-with-xdebug

また、オプション-d(--debug)を指定してコマンドを実行してみてください。何が問題なのかについて、かなりの情報が得られるはずです。

3
mojzis

私はいつもdrushリクエストでXDebugを使用しています。

  1. php -iを実行して、XDebugがCLI phpにロードされていることを確認します
  2. クライアントがXDebug接続をリッスンしており、正しいポートでリッスンしていることを確認してください。 PHPStorm、Netbeans、およびKomodo IDEをクライアントとして使用して正常にデバッグしました。
2
moshe weitzman

xdebug_start_trace()およびxdebug_stop_trace() XDebug関数を使用して、オンデマンドでデバッガーを開始できます。最初にCLIでXDebugを構成したことを確認してください(php -i | grep xdebug)。

次に、新しいワンライナーPHPファイルを次のように作成します(例:drush_xdebug_start.inc):

<?php xdebug_start_trace();

次に、drushを次のように実行します。

drush --early="$PWD"/drush_xdebug_start.inc whatever_command_you_need
2
kenorb

Xdebugが適切に設定されていると仮定すると、コードをステップ実行するIDEを統合するのは非常に簡単です。環境変数XDEBUG_CONFIGを "idekey = MYIDEKEY"に設定するだけです。

エイリアスを設定して簡単にしてください。これは私の.aliasファイル(tcsh)で使用するものです。

alias xdebugon 'setenv XDEBUG_CONFIG "idekey=MYIDEKEY"'
alias xdebugoff 'unsetenv XDEBUG_CONFIG'
1
Harry Slaughter