23

我正在尝试在 mamp pro 上设置 xdebug,但没有成功。我搜索了整个互联网,没有任何帮助。

首先,我尝试在 php.ini 中取消注释以下行:

zend_extension="/Applications/MAMP/bin/php/php5.4.4/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so"

接下来,我尝试了向导:http: //xdebug.org/wizard.php

接下来,我尝试将这些行添加到 php.ini:

xdebug.default_enable=1

xdebug.remote_enable=1

xdebug.remote_handler=dbgp

xdebug.remote_host=localhost

xdebug.remote_port=9000

xdebug.remote_autostart=1

没有什么帮助。我在我的 phpinfo 中看不到 xdebug。

MAMP PRO 版本:2.1.1

PHP版本:PHP 5.4.4

谢谢!

4

2 回答 2

31

MAMP 2.01 发布以来, XDebug 已包含在内。

解决了。这是帮助我的教程

  1. 启动 MAMP

  2. 通过 MAMP 编辑 php.ini 模板文件以启用扩展。通过 File -> Edit Template -> PHP -> PHP php.ini 编辑模板文件

    在 mac osx 上编辑 mamp 的 php.ini 模板

  3. 编辑 php.ini 模板文件的底部,使其最终看起来像您想要配置文件输出

    [xdebug]
    zend_extension="/Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so"
    xdebug.profiler_enable = 1
    xdebug.profiler_output_dir = "/tmp"
    ; DONT REMOVE: MAMP PRO php5.3.6.ini template compatibility version: 1
    

    如果您不想要配置文件输出并且只想运行 xdebug,请使用

    [xdebug]
    zend_extension="/Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so"
    xdebug.profiler_enable = 0
    xdebug.profiler_output_dir = "/tmp"
    ; DONT REMOVE: MAMP PRO php5.3.6.ini template compatibility version: 1
    

    现在,当您遇到错误时,如果将它们发送到标准输出,您将看到类似这样的内容

    我的php.ini文件:

    编辑 php.ini 文件以在 mamp mac osx 上运行 xdebug

  4. 保存编辑的模板并关闭编辑窗口

  5. 重启 MAMP

  6. 打开 MAMP 的 WebStart 页面并导航到 PHPInfo 选项卡。检查以确保 Xdebug 正在运行。在浏览器窗口中搜索“Xdebug”使这很容易。

    确认 xdebug 在 mac osx 上的 mamp 上运行

  7. 如果您使用与我上面相同的设置,当您运行 PHP 代码时,Xdebug 会将cachegrind.out文件放在您的“/tmp”目录中。打开您的“/temp”目录并运行您的一个 PHP 文件以确保它正常工作。您可以通过打开终端并运行来在 finder 中打开“/tmp”目录

    open /tmp
    

    mac osx 上 mamp 的 /temp 文件夹中的 cachegrind.out 输出

  8. 现在,您可以使用任何了解这些 cachegrind.out 文件的应用程序来查看配置文件数据。KCacheGrind (Linux/Windows, KDE)、WinCacheGrind (Windows)、xdebugtoolkitWebgrind等应用程序。我走了简单的路线并使用了webgrind。Webgrind 是一个简单的基于 Web 的应用程序,您可以在 MAMP 上本地运行它,只需单击一下,它就会自动查找 cachegrind.out 文件。继续设置 webgrind 的步骤。

  9. 下载 Webgrind

  10. 在 MAMP 上设置 Webgrind 主机以运行 Webgrind

    将 webgrind 设置为 mamp 上的主机以处理 xdebug php 配置文件输出

  11. 访问本地 MAMP 安装上的 webgrind url setup。我的只是 webgrind/

  12. 如果您已经有 cachegrind 输出文件,您应该能够在“自动(最新)”下拉列表中选择文件,或者将其保留为自动并单击更新,这将显示配置文件数据

  13. 扔一个庆祝的拳头泵

于 2012-07-23T21:36:43.653 回答
1

我自己设置 MAMP Pro 和 nginx 时遇到了麻烦,上面的答案对我不起作用。

问题是默认端口设置为 9000,在我的情况下,我已经使用了该端口,所以我在我的 nginx conf 中查看了这一行:

location ~ \.php$ {
            try_files        $uri =404;
            fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI.sock;
            fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include          fastcgi_params;
        }

然后转到 fastcgi_pass 设置为时所在的文件,在那里你会找到正确的端口号。就我而言,它位于 Applications/MAMP/Library/logs/fastcgi 中,文件名取决于您主机的 php 版本。

然后打开该文件,并将其中的任何 PID 设置为 php.ini 中的 xdebug.remote_port,对我来说是 13267。

值得一提的是,我的 PHP 的 MAMP 配置设置为 CGI 模式,而不是模块。

编辑:

我刚刚意识到端口号动态变化太多了。因此,我在 MAMP 的 nginx 模板中为 fastcgi pass 设置了硬编码值,如下所示:

fastcgi_pass      127.0.0.1:9072;
# comment out the regular setting just in case.
# fastcgi_pass     unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI.sock;
于 2019-06-24T14:21:56.147 回答