13

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

我已经为 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

确认已加载扩展程序。

设置没有任何路径映射的 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>

但是,当我们单击调用 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 没有在 application/libraries/LiveTime.php 中捕获断点的原因,因为 xdebug 似乎从未执行 LiveTime.php 脚本?

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

4

3 回答 3

9

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

在此处输入图像描述

注意 1:我也可以直接设置项目的路径root,但由于我对调试 Laravel“公共”文件夹和我的应用程序以外的任何东西都不感兴趣,所以我只为这两个文件夹设置路径。在此之后,一切都运行良好。

笔记2:上面显示的图像不是来自上述步骤中提到的“设置”对话框,而是来自“解决路径映射问题”对话框,该对话框为您提供了相同的地图映射小部件,其工作方式相同。修复任一位置的设置都将起作用。如果您没有要开始的服务器调试设置并且 IDE 检测到映射问题,则会出现“解决路径映射问题”对话框,此时它还将为您创建服务器设置。

于 2013-10-31T22:42:18.130 回答
1

对于使用 Netbeans 和 Laravel 的用户,您需要将“Web Root”设置为您的公共文件夹,该文件夹位于您的项目-> 属性-> 源中。

在 Netbeans 中编辑 Web 根目录

于 2017-05-17T04:16:10.767 回答
0

在我的情况下,“ breakpoint_set”/“ command is not available”问题的原因是禁用xdebug.extended_info选项(它默认启用,但我禁用它进行分析)。
断点不起作用然后xdebug.extended_info被禁用。
重新启用后我有断点工作xdebug.extended_info

于 2015-08-03T11:10:36.810 回答