在MAMP PRO上设置xdebug

时间:2012-07-23 18:19:53

标签: mamp xdebug

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

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

  
    

的zend_extension = “/应用/ MAMP / bin中/ PHP / php5.4.4 / LIB / PHP /扩展/无调试非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 =本地主机

         

xdebug.remote_port = 9000

         

xdebug.remote_autostart = 1

  

没有任何帮助。我在phpinfo中看不到xdebug。

MAMP PRO版本:2.1.1

PHP版本:PHP 5.4.4

谢谢!

2 个答案:

答案 0 :(得分:24)

由于已经包含release of MAMP 2.01 XDebug。

解决。这是帮助我的tutorial

  1. 启动MAMP

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

    edit php.ini template for mamp on mac osx

  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文件:

    edited php.ini file to run xdebug on mamp mac osx

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

  5. 重启MAMP

  6. 打开MAMP的WebStart页面并导航到PHPInfo选项卡。检查以确保Xdebug正在运行。在浏览器窗口中搜索“Xdebug”可以轻松完成。

    confirm xdebug running on mamp on mac osx

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

    来在finder中打开'/ tmp'目录
    open /tmp
    

    cachegrind.out output in /temp folder for mamp on mac osx

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

  9. Download Webgrind

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

    Setup webgrind as host on mamp to process xdebug php profile output

  11. 在您当地的MAMP安装上访问webgrind网址设置。我只是webgrind /

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

  13. 扔一个庆祝的拳头泵

答案 1 :(得分:0)

我自己设置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;