没有用xdebug,PhpStorm和Laravel 3/mod_rewrite命中的断点

Ral*_*alf 13 xdebug phpstorm laravel laravel-3

我非常绝望并且没有想法:

我为Laravel 3项目配置了xdebug和PhpStorm.在Mac OS X Apache上本地运行项目,因此PhpStorm和Web应用程序在同一台机器上运行.配置虚拟主机,以便localhost.lt指向Laravel的公共目录.

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
Run Code Online (Sandbox Code Playgroud)

确认扩展已加载.

设置PHP Web应用程序调试/运行配置,没有任何路径映射,因为没有符号链接,Web服务器和PhpStorm上的文件夹完全相同(因为Web服务器在同一台机器上).

当通过从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>
Run Code Online (Sandbox Code Playgroud)

但是,当我们单击从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
Run Code Online (Sandbox Code Playgroud)

与许多框架一样,Laravel使用.htaccess mod_rewrite通过public/index.php来管道所有内容.可能这是导致PhpStorm/xdebug无法捕获application/libraries/LiveTime.php中的断点的原因,因为xdebug似乎从未执行过LiveTime.php脚本?

如果是这样,我们如何解决这个问题呢?

Mik*_*keM 9

您需要设置路径映射您不需要为每个文件设置它.为了解决我的问题,我去了IntelliJ(PHPStorm相同)首选项> PHP>服务器..选择我的服务器并设置以下内容(见下面的注释2):

在此输入图像描述

注意1:我也可以直接将路径设置为项目根目录,但由于我对调试Laravel"public"文件夹和应用程序以外的任何内容不感兴趣,因此我只为这2个文件夹设置路径.在这之后一切都很完美.

注意2:上面显示的图像不是来自上面步骤中提到的"设置"对话框,而是来自"恢复路径映射问题"对话框,该对话框为您提供了相同的地图映射窗口小部件.修复任一地方的设置都可以.如果您没有要启动的服务器调试设置并且IDE检测到映射问题,则会出现"解决路径映射问题"对话框,此时它还将为您创建服务器设置.