我非常绝望并且没有想法:
我为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通过“Debug”启动时,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脚本吗?
如果是这样,我们如何解决这个问题?
答案 0 :(得分:8)
您需要设置Path Mappings您不需要为每个文件设置它。为了解决我的问题,我去了IntelliJ(PHPStorm相同)首选项&gt; PHP&gt;服务器..选择我的服务器并设置以下内容(见下面的注释2):
注1:我也可以直接设置路径项目根目录,但由于我对调试Laravel“public”文件夹和我的应用程序以外的任何内容不感兴趣,我只为这两个文件夹设置了路径。在此之后一切都运行良好。
注2:上面显示的图像不是来自上面步骤中提到的“设置”对话框,而是来自“Resovle Path”映射问题“对话框,它为您提供相同的地图映射窗口小部件。修复任一地方的设置都可以。如果您没有要启动的服务器调试设置并且IDE检测到映射问题,则会出现“解决路径映射问题”对话框,此时它还将为您创建服务器设置。
答案 1 :(得分:0)
在我的情况下,“breakpoint_set
”/“command is not available
”问题的原因已被禁用xdebug.extended_info
选项(默认情况下已启用,但我已将其禁用以进行性能分析)。<登记/>
断点不起作用,然后xdebug.extended_info
被禁用
重新启用xdebug.extended_info
后,我有断点工作。
答案 2 :(得分:0)