使用MAMP在Mac OS X上构建和安装Xdebug


Building and installing Xdebug on Mac OS X with MAMP

我在使用MAMP的Mac OS X上构建和安装Xdebug时遇到问题。

到目前为止,我在网上广泛搜索,目前我还停留在Xdebug的部分;安装向导";告诉我要;运行:phpize"在我下载的源代码上。

当我运行phpize时,我得到以下消息:

new-host-2:xdebug-2.2.0 Dima$ phpize
grep: /usr/include/php/main/php.h: No such file or directory
grep: /usr/include/php/Zend/zend_modules.h: No such file or directory
grep: /usr/include/php/Zend/zend_extensions.h: No such file or directory
Configuring for:
PHP Api Version:
Zend Module Api No:
Zend Extension Api No:
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

如果我做which phpize,我会得到:

new-host-2:xdebug-2.2.0 Dima$ which phpize
/usr/bin/phpize

这不是我想要使用的版本。我想使用我假设的phpize的MAMP安装版本,因为我想在PHP的MAMP版本上安装Xdebug。这是令人费解的,因为我已经将特定于MAMP的PHP bin路径添加到了$PATH变量中的.bash_profile中。

如果我运行echo $PATH,我得到:

new-host-2:xdebug-2.2.0 Dima$ echo $PATH
/opt/local/bin:/opt/local/sbin:/Applications/MAMP/bin/php/php5.4.3/bin:/Users/Dima/.rvm/gems/ruby-1.9.2-p290/bin:/Users/Dima/.rvm/gems/ruby-1.9.2-p290@global/bin:/Users/Dima/.rvm/rubies/ruby-1.9.2-p290/bin:/Users/Dima/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

MAMP特定的PHP路径显示在"/usr/bin"前面。我尝试的下一件事是运行特定于MAMP的phpize,手动为其提供整个路径,如下所示:

new-host-2:xdebug-2.2.0 Dima$ /Applications/MAMP/bin/php/php5.4.3/bin/phpize
-bash: /Applications/MAMP/bin/php/php5.4.3/bin/phpize: Permission denied

现在我在Finder中检查了这些文件的权限,它显示我有读取和写入该文件夹中文件的完全权限。我有点迷路了。

我遇到了同样的问题,但我找到了更好的解决方案。

Xdebug已在MAMP中。

检查php.ini文件:

/Applications/MAMP/conf/php5.x/php.ini

一直往下走。你会看到

[xdebug]
;zend_extension="/Applications/MAMP/bin/php5.X/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so"

将其更改为

[xdebug]
zend_extension="/Applications/MAMP/bin/php5.X/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp

重新启动服务器完成

请参阅:想要运行Xdebug吗?MAMP是最简单的方法…

我尝试了Dmitry Samuylov的答案,但对我来说不太管用,所以我在谷歌上搜索了更多,下面是诀窍。

  1. 从SourceForge 下载并解压MAMP组件

  2. 记下在phpize过程中找不到的路径。对我来说是:

    /Applications/MAMP/bin/php/php5.2.17/include/php/main/php.h
    /Applications/MAMP/bin/php/php5.2.17/include/php/Zend/zend_modules.h
    /Applications/MAMP/bin/php/php5.2.17/include/php/Zend/zend_extensions.h
    
  3. 在MAMP PHP目录中创建所需的路径。对我来说又是

    /include/php/
    
  4. 确保对目录的正确权限

  5. 找到目标PHP版本的组件(在我的例子中是5.2.17),并将它们复制到步骤3中创建的路径中。

  6. 从Xdebug站点运行使用正确版本phpize的说明

经过更多的研究和尝试,我在做了以下事情后成功安装了它:

  1. 在Terminal中,我运行了chmod u+x /Applications/MAMP/bin/php/php5.4.3/bin/*。打开phpize和该路径中其他所有内容的执行权限
  2. 按照本文安装命令行工具
  3. 根据本文安装最新的Autoconf和相关工具
  4. 之后,按照Xdebug向导提供的步骤顺利运行

重要的是要指出;解决方案";用于Xdebug 2。这几天我们在Xdebug3。

MAMP/macOS上的Xdebug 3

要在macOS上的MAMP中启用Xdebug 3,请执行以下操作:

  • 打开工具→phpinfo

  • 找到Loaded Configuration File行,并复制php.ini文件的完整路径(/Application/MAMP/......)。

  • 打开一个终端并键入命令open ,然后粘贴活动php.ini文件的复制完整路径。

  • 添加以下行

    [xdebug]
    zend_extension = xdebug
    xdebug.mode = debug
    xdebug.show_local_vars=1
    
  • 重新启动MAMP web服务器。

检查

再次检查phpinfo(刷新),并在启动with Xdebug vX.X.X....的ZEND引擎下查找一行。再往下看,你会发现一个带有大的Xdebug标志的部分,它向你展示了版本和(dis|en)功能。

如果没有显示,请检查拼写错误或其他拼写错误。

有关其他设置,请参阅Xdebug文档,这些设置可以添加到您打开的php.ini文件中,例如profile。如果您更改了PHP版本,您将不得不重复该过程。

备选方案

或者,购买MAMP Pro许可证,允许从MAMP控制面板执行此操作。

附加步骤

为了启动调试器(或探查器),您需要在浏览器请求中添加一个神奇的cookie。您可以使用浏览器插件轻松添加这些内容,如";Xdebug助手";适用于Chrome。

这很容易。

在*C:''MAMP''conf''phpx.x.x*目录中,打开每个相关的php.ini

然后将这些行放在php.ini:中

[xdebug]
xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_autostart=1
zend_extension="C:'MAMP'bin'php'php5.5.0'ext'php_xdebug.dll"