php - OS X 上的 xdebug 部分工作(例如,在终端而不是浏览器中打印堆栈跟踪)。

标签 php macos xdebug

我正在尝试让 xdebug 在我的 Mac 上运行。我正在使用带有内置版本 Apache (2.2.1) 和 PHP (5.3.8) 的 OS 10.6。我按照 xdebug 网站上的“tailored installation instructions”进行操作,基本上包括以下步骤:

  1. 从源代码构建 xdebug(版本 2.1.3)
  2. xdebug.so 移动到 /usr/lib/php/extensions/no-debug-non-zts-20090626
  3. 添加到 php.ini: zend_extension =/usr/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so
  4. 重新启动网络服务器。

据我了解,应该是这样。我知道大多数人将 xdebug 与像 PHPEclipse 这样的 IDE 一起使用,但听起来这并不是仅仅为了在页面上获得调试输出所必需的。很多旧的说明都涉及安装 MAMP,但看起来不再需要了。

标志 xdebug 正在工作: 当我运行 php -mphpinfo() 时,我得到了有关 xdebug 的预期信息。在脚本中,我可以调用 xdebug_is_enabled()(返回 1)和 xdebug_get_function_stack()(返回堆栈)等函数。

xdebug 不工作的原因: 我安装 xdebug 的主要原因是在出现错误时获取堆栈跟踪,但这种情况并没有发生。根据this documentation page ,只要在 php.ini 中将 display_errors 设置为 On(它是),我就应该得到一个堆栈跟踪。我已经尝试过应该引起警告的代码(例如,echo(hello))以及产生 fatal error 的代码(例如,$x->awesomefunction() 当 $x 不是对象时)。两者都不会产生任何 xdebug 输出, fatal error 只会导致页面静默结束。我链接到的文档中给出的测试代码也没有产生任何结果。

更新:事实证明,如果我从终端运行脚本并出现 fatal error ,我确实会从 xdebug 获得堆栈跟踪。但是,当我从浏览器运行脚本时,它仍然没有显示

此外,常规错误报告现在已中断:以前,我会通过包含以下命令来获得错误输出:

ini_set("display_errors","1");
ERROR_REPORTING(E_ALL);

现在,将这些行放入我的脚本中也不会产生任何错误报告。 (在浏览器中。当我从终端运行脚本时,它确实会导致显示错误。)

那么,这里出了什么问题?我在 xcode 安装中遗漏了什么吗?我是否有一个设置卡在我系统的其他地方,抑制错误?我已经尝试了所有我能想到的方法,但我很乐意测试您的任何想法。

最佳答案

如果它在控制台而不是浏览器上运行,则可能是 xdebug 配置问题。

我不是 Mac 用户,但在 Ubuntu 上有 2 个不同的 php.ini 文件,一个用于控制台,一个用于 apache。如果 Mac 也是这种情况,您可以检查 xdebug 是否已启用并在两个 php.ini 文件中正确设置。

您还可以检查 guide 中提到的 xdebug 设置.

关于php - OS X 上的 xdebug 部分工作(例如,在终端而不是浏览器中打印堆栈跟踪)。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9757593/

相关文章:

PHP:如何按键对数组进行分组?

php - pdo 使用 mysql 不显示任何内容

php - Laravel 和 MySQL 中的排序不正确

java - 在 Mac OS X Snow Leopard 上为 Glassfish 3 构建 Java EE 应用程序

NetBeans 上的 PHP xdebug 不起作用

PHP 相加两个时间变量

c++ - XCode 自动停用断点

php - Xdebug laravel artisan 命令

php - Eclipse 调试器错误模型代理已安装通知作业

macos - NSStatusItem 菜单栏中的浮雕效果