我正在尝试让xdebug在我的Mac上运行。我正在使用OS 10.6与Apache(2.2.1)和PHP(5.3.8)的内置版本。我按照xdebug网站上的“tailored installation instructions”进行了操作,该网站基本上包含以下步骤:
xdebug.so
移至/usr/lib/php/extensions/no-debug-non-zts-20090626
据我所知,应该是这样。我知道大多数人都使用像PHPEclipse这样的IDE来使用xdebug,但听起来不仅仅是为了在页面上获得调试输出。许多旧指令涉及安装MAMP,但看起来不再需要了。
标志xdebug正在运行:当我运行php -m
和phpinfo()
时,我获得了有关xdebug的预期信息。在脚本中,我能够调用xdebug_is_enabled()
(返回1)和xdebug_get_function_stack()
等函数(返回堆栈)。
xdebug无法运行的方式:我安装xdebug的主要原因是在出现错误时获取堆栈跟踪,而这种情况并未发生。根据{{3}},只要在php.ini中将display_errors
设置为On,我就应该获得堆栈跟踪(它是)。我已经尝试了应该引发警告的代码(例如echo(hello)
)以及产生致命错误的代码(例如,当$ x不是对象时$x->awesomefunction()
)。两者都没有产生任何xdebug输出,致命错误只会导致页面无声地死亡。我链接到的文档中给出的测试代码也没有产生任何结果。
UPDATE:事实证明,如果我从终端运行一个带有致命错误的脚本,我会从xdebug获得一个堆栈跟踪。但是,当我从浏览器运行脚本时,它仍然没有出现
此外,定期错误报告现已中断:以前,我会通过包含命令获得错误输出:
ini_set("display_errors","1");
ERROR_REPORTING(E_ALL);
现在,将这些行放在我的脚本中也不会产生任何错误报告。 (在浏览器中。当我从终端运行脚本时,它确实会显示错误。)
那么,这里有什么问题?我是否在xcode安装中留下了什么?我的系统上的其他位置是否有设置,可以抑制错误?我已经尝试了我能想到的一切,但我很乐意测试你的任何想法。
答案 0 :(得分:0)
如果它在控制台而不是在浏览器上工作,则可能是xdebug配置问题。
我不是Mac用户,但在Ubuntu上有2个不同的php.ini文件,一个用于控制台,一个用于apache。如果Mac也是如此,您可以检查xdebug是否已启用并在两个php.ini文件中正确设置。
您还可以查看guide中提到的xdebug设置。
答案 1 :(得分:0)
经过几个小时的颠簸之后,我发现我的一个测试文件实际上包含了另一个将display_errors设置为0的文件。另一个测试文件直接来自xdebug网站,但我认为当时我是使用它我引入了一些其他配置错误,阻止它正常工作。我真的很尴尬!让这成为今天在调试过程中系统化,可重复测试重要性的对象课程。从好的方面来说,xdebug现在像桃子一样工作。
总而言之,有效的一系列步骤是: