当前位置: 首页 > 知识库问答 >
问题:

断点没有命中xdebug,PhpStom和Laravel 3/mod_rewrite

文寒
2023-03-14

我非常绝望,没有想法了:

我已经为Laravel 3项目配置了xdebug和PhpStom。在Mac OS X Apache上本地运行该项目,因此PhpStom和Web应用程序在同一台机器上运行。配置了一个虚拟主机,以便localhost. ll指向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服务器上的文件夹和for 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/live time . PHP中的断点的原因,因为xdebug认为LiveTime.php脚本从未执行过。

如果有,怎么解决这个问题?

共有2个答案

长孙雅志
2023-03-14

在我的例子中,“断点集”/“命令不可用”问题的原因已禁用xdebug。extended_info选项(它在默认情况下是启用的,但我在分析时禁用了它)
断点不工作,则xdebug。extended_info被禁用
在重新启用xdebug.extended_info之后,断点开始工作。

锺离德庸
2023-03-14

对于使用Netbeans和Laravel的用户,您需要将“WebRoot”设置为位于项目中的公共文件夹-

 类似资料:
  • 问题内容: 有时,当我检查我未编写的代码时,会以调试模式启动eclipse并使用数字来理解程序。例如,如果它们是从数据库中检索到的n个项目,那么知道服务中有n个已处理的项目等会很有趣。 当使用循环时,事情会变得更加复杂:如果我们处于“ while”循环中,则执行次数未定义,并且如果有替代方法,则执行流程可能会发生很大变化。 为此,我有时会在一部分代码中设置一个断点,并计算我们到达断点的次数。 当然

  • 我正在使用Windows7,最近从Eclipse切换到了Android Studio。我现在无法调试。 运行Android Studio 0.8.6,我设置了一个完全默认的安装,我创建了一个默认的空项目,目标是ICS SDK,使用新的项目向导。然后,我将一个断点放在创建中,单击调试按钮并运行。 我可以在调试器窗口中看到“已连接到目标VM”消息,因此附加了调试器。 我知道代码正在执行,因为我正在更新

  • 我已经重新启动了nginx和php7.4-fpm。 xdebug 3看起来是基于以下内容安装的: phpinfo()中的Ini目录: 加载的配置文件 /etc/php/7.4/fpm/php.ini扫描此目录以查找其他. ini文件 /etc/php/7.4/fpm/conf.d解析 /etc/php/7.4/fpm/conf.d/10-opcache.ini, /etc/php/7.4/fpm/

  • 我有一个gradle项目,当我放置一个断点时,它会显示为一个红点,里面有一个勾,它就可以正常工作了。 问题是,在某些类中(在同一个项目中,而不是依赖类中),红点内部没有勾号,也没有说明为什么它不会工作。但它就是不起作用..: 到目前为止我尝试了什么: null

  • 不熟悉OptaPlanner,想在Eclipse中调试示例任务分配以学习。发现断点只有在代码被UI相关代码调用时才会被命中,例如 当在以下位置设置断点时: 它不会被击中。我的问题是,为什么断点没有被击中?如何击中断点?

  • 问题内容: 有没有一种方法可以启用和禁用Eclipse中的所有断点…?我不想删除它们,只是禁用它们并在满足某些条件后启用它们。 提前致谢 问题答案: 在菜单下,有一个复选框。如果选择该选项,则不会触发断点(源中的实际断点标记会在它们之间绘制一条线,以指示它们处于跳过模式)。 当然,在默认配置中,运行代码(而不是调试代码)似乎也忽略了断点,因此您可能想尝试运行它而不是调试。请注意,这是Galileo