Я довольно отчаянный и исчерпал идеи:
Я настроил xdebug и PhpStorm для проекта Laravel 3. Запуск проекта локально в Mac OS X Apache, поэтому PhpStorm и веб-приложение запускаются на одном компьютере. Настроил виртуальный хост, чтобы localhost.lt указывал на общий каталог Laravel.
Соответствующие записи xdebug в php.ini:
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
Подтверждено, что расширение загружается.
Настройте конфигурацию отладки/запуска PHP Web Application без каких-либо сопоставлений пути, поскольку ничто не символически связано, а папки на веб-сервере и PhpStorm точно такие же (как веб-сервер на одном компьютере).
При запуске через "Отладка" из среды IDE xdebug_remote.log правильно показывает точку останова, которую мы установили в одном из файлов в приложении/библиотеках:
<- 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. Может ли это послужить причиной того, что PhpStorm/xdebug не улавливает точку останова в приложении /library/LiveTime.php, поскольку она появляется в xdebug, что LiveTime.php script никогда не выполняется?
Если да, то как мы можем решить эту проблему?