【发布时间】:2014-10-26 15:51:29
【问题描述】:
我正在尝试使用 phpstorm 设置 xdebug 调试器。我在 Windows 7 上运行 xampp。php.ini 中的 Xdebug 部分:
[XDebug]
zend_extension = "C:\xampp\php\ext\php_xdebug-2.2.5-5.5-vc11.dll"
xdebug.profiler_append = 0
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = "C:\xampp\tmp"
xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.idekey = "PHPSTORM"
xdebug.remote_port = 10000
xdebug.trace_output_dir = "C:\xampp\tmp"
在 phpstorm 中我检查了这个:
另外,我已经设置了合适的端口:
之后我:
已创建书签以使用适当的 IDE 密钥 (PHPSTORM) 启动调试器(在 jetbrain 的页面上生成);
使用了谷歌浏览器的特殊扩展,也为此设置了 cookie:
最后,我什至禁用了我的防火墙(在此之前我尝试添加规则,但这没有帮助)。
我在这里写的,并没有帮助我捕捉断点。我点击了IDE中的“电话按钮”,这也没有帮助。而且,我想强调的是,来自 Xdebug 的传入请求也不是在第一次使用时出现的。
另外,我想提一下,只有 index.php 调试有效。任何控制器/动作都不会,但只有 index.php 会。
在 phpinfo() 中也存在 xdebug:
【问题讨论】:
-
你有
xdebug.remote_autostart = 1——不需要任何书签或类似的东西。我建议删除Settings | PHP | Servers中的所有条目并重新开始(零配置方法:confluence.jetbrains.com/display/PhpStorm/…)。现在很难说出了什么问题——如果在路径中的某处使用了符号链接或类似的东西,你可能需要指定正确的路径映射进行调试(记住:xdebug 仅适用于最终/已解决的路径) -
要尝试的其他事情:将
xdebug_break();放在正常断点不起作用的文件中(显然,不在设置断点的同一行上)——有什么区别吗?另外——带断点的行是什么样的:xdebug 不能总是在某些行上中断(例如,一些多行语句等)。如果仍然没有 - 启用 xdebug 日志记录并查看它的内容:xdebug.remote_log -
还有——带有端口号的屏幕截图:如果你同时禁用
Force break...选项——它会完全中断吗?如果不是——那么你肯定有错误的路径映射(或者文件在项目之外)。 -
1.我已经这样做了,没有任何区别。 2. 用xdebug_break(); 捕获断点,但有问题(见链接)c2n.me/ja0etr 但问题出在哪里?路径 1 是正确的,那里的文本框 2 是什么? 3.如果我禁用,没有任何区别。你是对的,我在映射方面遇到了麻烦......
-
顺便说一句:#1 路径通常应用于项目根目录:所有子文件夹都将继承它作为基础;然后您可以根据需要为子文件夹调整它。由于我没有看到您的完整路径...我可能只认为 1)您没有整个项目/根目录的路径映射 .. 和 2)该文件(控制器)不在您的
public文件夹中没有映射。再说一次:对于本地项目(服务器和 IDE 在同一台计算机上),通常不需要路径映射。如果需要,则意味着符号链接/映射驱动器正在路径中的某处使用。