1

Eclipse用のJavaデバッガーと同様の方法で、ブラウザーアクションからブレークポイントに到達するようにEclipse内のZend PDTデバッガーを構成することは可能ですか?つまり、ブレークポイントを設定し、デバッガーを起動し、サイトを参照して、ヒットしたときにブレークポイントにドロップします。

個々のスクリプトとWebページをデバッグできますが、Webページから呼び出されるスクリプトをデバッグしようとしています。私はJoomlaを使用しており、ページのコンテンツをクリックしながら依存関係スタックをトラバースできるようにしたいと考えています。

アドバイスをよろしくお願いします。

4

1 に答える 1

7

私はこれを行う方法を見つけましたが、それはかなり長い間巻き込まれています。これにより、サイトをブラウザ化して、ブレークポイントの1つに到達したときにのみデバッガにドロップできるように、Javaをデバッグするのと同じようにPHPをデバッグできます。Linuxの設定は次のとおりです。

ZendDebuggerのインストール

まず、ZendDebuggerをインストールして構成する必要があります。

  • Eclipse PDT(PHP開発ツール)がインストールされていることを確認してください。そうでない場合:[ヘルプ]> [新しいソフトウェアのインストール...]のソースリストにこのリポジトリを追加します:http://download.eclipse.org/releases/helios
  • プログラミング言語パッケージを展開し、PHP開発ツール(PDT)SDK機能を選択します。
  • [次へ]をクリックしてインストールします。
  • このリポジトリをソースリストに追加して、同じ方法でZend PDTをインストールします:http: //downloads.z​​end.com/pdt
    • Zend CE Featuresを展開し、 Zend Debugger Featureを選択して、 Nextをクリックします。
  • Eclipseを再起動し、[ウィンドウ]>[設定]>[PHP]>[デバッグ]>[インストールされたデバッガー]に移動して、Zendデバッガーがインストールされていることを確認します。
  • ZendDebugger.soファイルを指すようにphp.iniを構成します。

    • 最初のタイプ

      php5 -i | grep "Loaded Conf"

    ターミナルにアクセスして、編集してテキストエディタで開く必要のある正しいphp.iniファイルを見つけます

    • 次のタイプ

      ZendDebugger.soを見つけます

    ターミナルに移動し、その場所をphp5デバッガファイルにコピーします。

    • php.iniファイルの最後に次の行を追加します。

      [Zend]
      Zend_extension="[ZendDebugger.soファイルへのパス]"
      zend_debugger.allow_hosts= "127.0.0.1、[必要に応じてIPアドレス]"
      zend_debugger.expose_remotely=常に
      locateコマンドとIPから返されたパスに置き換えます住所。

  • 次のように入力してPHPを再起動します

    sudo /etc/init.d/apache2 restart

    ターミナルに。

  • 次に、

    php5 -m

    ターミナルにコマンドを入力して、ZendDebuggerが正しく構成されていることを確認します。次のようなものが表示されます。

    xmlreader
    xmlwriter
    Zend Debugger
    zip
    zlib

    [Zend Modules] Zend Debugger

    ダンプの終わり近く。Zend Debuggerが表示されない場合は、正しいphp.iniファイルを編集し、ZendDebugger.soファイルへのパスが有効であることを確認してください。変更を反映させるには、必ずPHPを再起動してください。

Eclipseの構成

次に、Eclipseを構成する必要があります。

  • まず、[ウィンドウ]>[設定]>[PHP]> [PHP実行可能ファイル]に移動し、最新のPHP CLIライブラリがインストールされ、デフォルトとして設定されていることを確認します。
  • 次に、[ウィンドウ]>[パースペクティブを開く]>[その他]>[PHPデバッグ]に移動して、EclipseにPHPデバッグパースペクティブを追加します。
  • 次に、[ウィンドウ]>[設定]>[PHP]> [デバッグ]に移動し、[プロジェクト固有の設定の構成]をクリックします。
  • デバッグするプロジェクトを選択し、[OK]をクリックします。

    • [プロジェクト固有の設定を有効にする]をオンにします。
    • 必要な設定は次のとおりです。

    PHP Debugger:Zend Debugger
    Server:[プロジェクトへのローカルURLパス(これはhostsファイルで構成する必要があります)]
    PHP実行可能ファイル:5.3.x(またはそれ以降)

    デフォルトのベースURL /ベースパス:/
    自動生成されたベースURL:http:/ /[プロジェクトへのローカルURLパス]

    • [最初の行で中断]オプションのチェックを外し、[OK]をクリックして構成ウィンドウを閉じてから、メインのPHPデバッグページで同じオプションのチェックを外します。[適用]をクリックして設定を保存します。
  • 次に、[ウィンドウ]>[設定]>[PHP]> [PHPサーバー]に移動し、URLを使用して新しいサーバー構成を追加します

http://[プロジェクトへのローカルURLパス]

これは、ホームページにアクセスするためにdev'で使用するホスト構成と同じURLである必要があります。構成に名前を付けて、デフォルトとして設定します。[完了]と[OK]をクリックして、Eclipseを再起動します。

  • 次に、[ウィンドウ]>[設定]>[一般]>[Webブラウザー]に移動し、[外部Webブラウザーを使用する]を選択して、デバッグ中に操作するブラウザーを選択します。>注: >Firefoxは使用しないでください。Zend PDTはそれにバインドし、Firefoxをアンインストールして再インストールしない限り、ブラウザーをデバッガーから切り離すことはできません。OperaブラウザはZendPDTで群を抜いて動作するので、追加する方法は次のとおりです。
  • Operaブラウザをインストールした後、[ウィンドウ]>[設定]>[一般]>[Webブラウザの設定]に再度移動し、[新規]を選択して次のパラメータを使用します。

    名前:Opera
    場所:/ usr / bin / opera
    パラメーター:%URL%

    [OK]をクリックし、Firefoxが存在する場合はそれを選択して削除し、[Opera]をオンにして[OK]をクリックします。

  • Eclipseを再起動すると、PHPのデバッグを開始する準備が整います。

デバッガーの使用

  • PHPパースペクティブで、PHPファイルを開き、[プロジェクト]メニューから、または[デバッグ]アイコンの横にある下向き矢印を選択して、 [デバッグ]>[PHPWebページ]を選択します。
  • デバッグURLの確認を求めるアラートウィンドウが表示される場合があります。ベースURLの後のすべてを削除して、次のようにします。

    http://[プロジェクトへのローカルURLパス]

    URLとして[OK]をクリックします。

  • EclipseがPHPDebugPerspectiveに自動的に切り替わらない場合は、手動で切り替えます。

  • ブラウザに移動し、上記で設定したURLに移動します。ホームページを解決するには、デバッガーを前方に実行する必要がある場合があります。デバッグセッションを完全にバインドする前に、デバッガーを数回更新して実行する必要がある場合があります。
  • 通常どおりサイトをナビゲートでき、デバッガーはブレークポイントでコードにドロップします。

トラブルシューティング

  • PHPデバッグセッションが開始されると、ページが読み込まれる前にセッションが終了し、ブラウザのページが空白のままになることがあります。デバッグスタックビューでセッションを右クリックして、[再起動]を選択してみてください。
  • デバッグセッションを初めて起動するときは、ブラウザウィンドウのURLが設定したベースURLとして表示されることを確認してください。つまり、ZendがURLに追加するデバッガパラメータをすべて削除します。今後、URLはきれいに表示されるはずです。
  • よりスムーズなデバッグのために、PHP開発を完了する前に、終了したすべてのデバッグセッションをPHPデバッグパースペクティブから削除してください。
  • PHPデバッグパースペクティブがフォーカスされている間は、閉じるのに長い時間がかかるため、Eclipseをシャットダウンしないように注意してください。
于 2011-05-30T21:05:56.103 に答える