私はかなり絶望的で、アイデアが不足しています:
Laravel 3 プロジェクト用に xdebug と PhpStorm を構成しました。プロジェクトを Mac OS X Apache でローカルに実行するため、PhpStorm と Web アプリケーションは同じマシンで実行されます。localhost.lt が Laravel の public ディレクトリを指すように仮想ホストを構成しました。
関連する php.ini の xdebug エントリ:
zend_extension = /usr/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so
[xdebug]
xdebug.idekey="PHPSTORM"
xdebug.remote_enable=1
xdebug.profiler_enable=1
xdebug.remote_log=/var/log/xdebug_remote.log
xdebug.remote_connect_back=1
拡張機能が読み込まれることを確認しました。
何もシンボリックリンクされておらず、Web サーバー上のフォルダーと PhpStorm のフォルダーがまったく同じであるため (Web サーバーが同じマシン上にあるため)、パス マッピングなしで PHP Web アプリケーションのデバッグ/実行構成をセットアップします。
IDE から「デバッグ」を介して起動すると、xdebug_remote.log は、アプリケーション/ライブラリ内のファイルの 1 つに設定したブレークポイントを正しく示します。
<- breakpoint_set -i 5 -t line -f
file:///Users/RalfR/src/livetime/application/libraries/LiveTime.php -n 676
->
<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="5" id="9230016"></response>
ただし、LiveTime.php ライブラリから関数を呼び出すリンクをクリックすると、ブレークポイントにヒットしません。ログには次のように表示されます。
<- stack_get -i 6 ->
<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="stack_get" transaction_id="6"><stack where="{main}" level="0" type="file" filename="file:///Users/RalfR/src/livetime/public/index.php" lineno="14"></stack></response>
<- run -i 7 ->
<response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="run" transaction_id="7" status="stopping" reason="ok"></response>
<- run -i 8
Log closed at 2013-04-22 21:03:57
多くのフレームワークと同様に、Laravel は .htaccess mod_rewrite を使用してすべてを public/index.php にパイプします。LiveTime.php スクリプトが実行されないことが xdebug に表示されるため、これが PhpStorm / xdebug が application/libraries/LiveTime.php のブレークポイントをキャッチしない原因でしょうか?
もしそうなら、どうすればこの問題を解決できますか?