无法使用Homebrew在Mac上安装xdebug

63

我对使用Homebrew还比较陌生,但我很喜欢它。这样很方便。我想安装Xdebug,有些网上的帖子说要这样做:

brew install xdebug

但是它不起作用。 我收到的错误消息是:Error,没有可用的公式。

我运行了brew search xdebug并返回:

josegonzalez/php/php53-xdebug    josegonzalez/php/php54-xdebug

我尝试了几次不同的brew install,包括brew install php53-xdebug,但还是没有成功。有人能帮帮我吗?我在Xdebug的网站上找不到关于使用Homebrew的信息,但网络上的帖子似乎表明这是可能的。


请使用 MacPorts 并运行 sudo port install php56-xdebug - Yevgeniy Afanasyev
14个回答

116

// 2023年仍然有效

由于homebrew移除了包含已经安装了xdebug的额外php存储库,您需要手动安装它。

概要

  1. brew install php@<php版本> 安装php
  2. 更新您的路径
  3. pecl install xdebug 安装xdebug

完整的逐步示例

# update homebrew
brew update

# install a version of php, e.g. 7.0
brew install php@7.0

# now they tell you how to link it, in my case
echo 'export PATH="/usr/local/opt/php@7.0/bin:$PATH"' >> ~/.bash_profile
echo 'export PATH="/usr/local/opt/php@7.0/sbin:$PATH"' >> ~/.bash_profile

# reload the file with the updated path, so we can use pecl
source ~/.bash_profile

# check that the path is to the correct php executable,
# and pecl is available
which pecl
# returns: /usr/local/opt/php@7.0/bin/pecl

# install xdebug, see https://xdebug.org/docs/install#pecl
pecl install xdebug

# check that everything worked
php --version
# should show a xdebug version
# like:  with Xdebug v2.6.0, Copyright (c) 2002-2018, by Derick Rethans

上面的pecl install xdebug步骤已经完成。
Build process completed successfully
Installing '/usr/local/Cellar/php@7.0/7.0.30/pecl/20151012/xdebug.so'
install ok: channel://pecl.php.net/xdebug-2.6.0
Extension xdebug enabled in php.ini

所以我甚至不需要在php.ini中启用xdebug.so。
如果你需要一个特殊版本的xdebug(例如,你的IDE不喜欢3.x.x版本),你可以安装一个特定版本的xdebug-$VERSION,例如pecl install xdebug-2.9.8。 你可以在可用版本列表(感谢Bower)中找到它们。

2
这种使用 pecl 的安装方法可行 - 而 Placeholder 的方法(来自 xdebug.org 的说明)则不行。谢谢! - SUhrmann
2
您可能需要运行mkdir并创建/usr/local/Cellar/php@7.0/7.0.30/pecl/20151012文件夹。我创建了它们,xdebug.so成功安装在路径上。 - Sarasranglt
1
pecl install xdebug 为我安装的是版本3.0.2,而不是你输出的2.6.0,这个版本似乎不被我的IDE支持。您可以通过在命令后添加“-version_number”来指定要安装的版本,例如 pecl install xdebug-2.9.8。您可以在此处查找可通过pecl获得的所有xdebug版本的完整列表。 - Bower
3
mkdir() 可能会因为 Build process completed successfully Installing '/usr/local/Cellar/php@7.4/7.4.26_1/pecl/20190902/xdebug.so' Warning: mkdir(): File exists in System.php on line 294 而失败。对我来说,pecl 目录是一个指向不存在目录的符号链接。使用 rm 删除此符号链接,然后再次使用 pecl 进行安装。 - Richard Tyler Miles
1
在调用mkdir()函数失败后,我尝试了@RichardTylerMiles的建议。接下来,我需要编辑php.ini文件,并使用绝对路径去指定xdebug.so的位置。在我的情况下,路径是/opt/homebrew/Cellar/php/8.1.6/pecl/20210902/xdebug.so - Chad
显示剩余3条评论

77

添加该仓库:https://github.com/josegonzalez/homebrew-php#readme

然后使用 brew install php54-xdebug 安装 PHP 5.4 版本的 Xdebug:

或者使用 brew install php53-xdebug 安装 PHP 5.3 版本的 Xdebug:

或者使用 brew install php55-xdebug 安装 PHP 5.5 版本的 Xdebug:


5
适用于 PHP5.5 的安装方式(已测试):运行 brew install php55-xdebug - luchaos
3
如何将存储库添加到 Homebrew 中?- 使用命令“brew tap josegonzalez/homebrew-php”。 - MEM
6
使用Homebrew安装PHP 5.6,具体方法请参考链接:https://dev59.com/Xl8d5IYBdhLWcg3wvkSN#26505558。然后运行`brew install php56-xdebug`安装xdebug。 - Tim
1
我已经使用标准的brew存储库使其工作,详见下面的答案:https://dev59.com/0mcs5IYBdhLWcg3wmlOk#50181214 - luckydonald
1
这个不再起作用了,现在我们必须使用 pecl 来安装它,很遗憾。有人把这个答案取消勾选。 - jerclarke
显示剩余7条评论

19

更新日期:2019年9月10日

适用于PHP 5.6和7.0(不再在brew核心中)

brew tap exolnet/homebrew-deprecated

使用brew捆绑的pecl(当使用brew安装php时)

PHP 5.6示例

brew install php@5.6
$(brew --prefix php@5.6)/bin/pecl install --force xdebug-2.5.5

PHP 7.0 示例

brew install php@7.0
$(brew --prefix php@7.0)/bin/pecl install --force xdebug

PHP 7.1 示例

brew install php@7.1
$(brew --prefix php@7.1)/bin/pecl install --force xdebug

PHP 7.2 示例

brew install php@7.2
$(brew --prefix php@7.2)/bin/pecl install --force xdebug

PHP 7.3示例

brew install php@7.3
$(brew --prefix php@7.3)/bin/pecl install --force xdebug

或者首先使用brew链接

PHP 5.6 示例

brew install php@5.6
brew link --force php@5.6
pecl install --force xdebug-2.5.5
brew unlink php@5.6

PHP 7.0 示例

brew link --force php@7.0
pecl install --force xdebug
brew unlink php@7.0

PHP 7.1 示例

brew link --force php@7.1
pecl install --force xdebug
brew unlink php@7.1

PHP 7.2 示例

brew link --force php@7.2
pecl install --force xdebug
brew unlink php@7.2

PHP 7.3 示例

brew link --force php@7.3
pecl install --force xdebug
brew unlink php@7.3
如果执行php -v命令时出现错误,指出找不到xdebug.so(假设pecl安装成功),那么您可能有“旧”的设置,比如php.ini。使用brew卸载/重新安装php不会删除ini文件。将php升级到新格式不会更新ini文件。在删除文件夹/usr/local/etc/php/5.6/和xdebug之后,只需使用brew重新安装php即可使xdebug正常工作。
新的brew php安装不会链接。如果您愿意,可以自行完成此操作(brew link --force php@5.6)。还可以安装brew-php-switcher以在不同版本之间切换。
brew install brew-php-switcher
brew-php-switcher 5.6 -s
php -v
brew-php-switcher 7.0 -s
php -v

请记住,如果您将PHP加载为服务,则必须重新启动服务。

brew services restart php@7.0

这是安装所有必要的PHP模块的更简单方法。 brew install php@7.1 && $(brew --prefix php@7.1)/bin/pecl install --force xdebug - Mike Nguyen
这个答案似乎是唯一一个展示如何使用Homebrew和每个PHP Pecl安装来为多个PHP版本安装Xdebug的。这太棒了! - Machado

18

暂时不要考虑使用Homebrew,因为根据稳定性的考虑,我试过,不是一个好主意。相反,应该坚持使用默认的安装指南:

在Mac OSX上安装XDebug

  1. 前往http://xdebug.org/wizard.php并粘贴您的phpinfo()内容。
  2. 下载xdebug-2.2.5.tgz (http://xdebug.org/files/xdebug-2.2.5.tgz)
  3. 使用以下命令解压下载的文件:

    tar -xvzf xdebug-2.2.5.tgz

  4. 运行:

    cd xdebug-2.2.5

  5. 运行 phpize (如果您没有,则通过Homebrew将其安装)

    phpize

  6. 作为输出的一部分,它应该显示(如果没有,请检查是否使用了错误的phpize):

    Configuring for: ...
    Zend Module Api No: 20100525
    Zend Extension Api No: 220100525

  7. 运行:

    ./configure

  8. 运行:

    make

  9. 运行:

    cp modules/xdebug.so /usr/lib/php/extensions/no-debug-non-zts-20100525

  10. 编辑 /etc/php.ini 并添加以下行:

    zend_extension = /usr/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so

  11. 在终端中输入以下命令以重启Web服务器:

    sudo apachectl restart


9
我知道我正在挖掘一个旧帖子,但为什么你会告诉他忽略他的软件包管理器并有可能破坏他已经配置好的系统呢?他只需要进入homebrew/php并在使用brew install时选择他需要的版本即可。这不仅是错误的建议,而且有潜在的危险性。用你的方法编译和制作自己的软件包更麻烦,更新更困难。虽然学会如何编译和制作自己的软件包很好,但软件包管理器也有明确的用途。 - Brian Ellis
编译后我得到了一系列错误列表,其中包括 In file included from ./php_xdebug.h:35: ./xdebug_code_coverage.h:47:36: error: a parameter list without types is only allowed in a function definition - Yevgeniy Afanasyev

6

我在谷歌上搜索如何在上为PHP 7.1安装时找到了这个页面,现在我决定在这里分享我的解决方案:

brew install homebrew/php/php71-xdebug

也许将来对其他人有帮助...

2
常规命令 brew install php72-xdebug 对我无效。使用完整名称可以解决问题。谢谢。 - Dewald Els
2
我真的希望人们停止在Homebrew中移动东西... $ brew install homebrew/php/php71-xdebug 错误:homebrew/php已被弃用。此存储库现在为空,因为其所有配方都已迁移。 - BrDaHa

5

如何在Big Sur上为php8开启Xdebug

先通过brew安装php8.

~ % pecl install xdebug
ERROR: `phpize' failed

哎呀!检查一下 xcrun。感谢 Louis Charette 的提醒:

~ % xcrun --show-sdk-path
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

错误。更新Xcode。我刚安装完并重新测试了:

~ % xcode-select --install
xcode-select: note: install requested for command line developer tools

~ % xcrun --show-sdk-path 
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk

好了!现在回去尝试再试一次pecl:

~ % pecl install xdebug
...
Build process completed successfully
Installing '/usr/local/Cellar/php/8.0.0_1/pecl/20200930/xdebug.so'
install ok: channel://pecl.php.net/xdebug-3.0.2
Extension xdebug enabled in php.ini

然后检查它是否起作用:

~ % php -v
PHP 8.0.0 (cli) (built: Nov 30 2020 13:51:52) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies
    with Xdebug v3.0.2, Copyright (c) 2002-2021, by Derick Rethans
    with Zend OPcache v8.0.0, Copyright (c), by Zend Technologies

4
我收到这个错误信息: Build process completed successfully Installing '/usr/local/Cellar/php/8.0.3/pecl/20200930/xdebug.so'警告:在 System.php 的第 294 行出现 mkdir():文件已存在。 PHP 警告:mkdir():文件已存在,位于 /usr/local/Cellar/php/8.0.3/share/php/pear/System.php 的第 294 行。警告:在 System.php 的第 294 行出现 mkdir():文件已存在。 错误:无法创建目录 /usr/local/Cellar/php/8.0.3/pecl/20200930。 - Cesar Mtz
谢谢 @Bernievv,这对我真的很有用。 ❯ php -v PHP 8.1.2 (cli)(build: Jan 21 2022 04:34:05)(NTS) 版权所有(c)PHP Group Zend Engine v4.1.2,版权所有(c)Zend Technologies with Xdebug v3.1.2,版权所有(c) Derick Rethans with Zend OPcache v8.1.2,版权所有,by Zend Technologies - Steferson
@CesarMtz 导航到 /usr/local/Cellar/php/8.0.3 并使用 rm -f pecl 删除符号链接,然后再次运行 pecl install xdebug 命令。这将创建目录并修复问题,参考 https://github.com/Homebrew/homebrew-core/issues/41081#issuecomment-503256871。 - Mike Dubs

3
这是我的解决方案!试试看吧!;)
1. 安装开发者工具:
xcode-select --install

2 安装 Autoconf。这是一种用于生成自动配置软件的 shell 脚本工具。

brew install autoconf

如果您使用的是PHP>5.6版本

sudo pecl install xdebug

玩得开心 ;)


1

macOS 10.14 Mojave,Homebrew,PHP 7.3,2020年4月

以下文章中提供的描述是我在macOS 10.14 Mojave上通过Homebrew安装PHP 7.3并使用xdebug的唯一可行方法:

brew list | grep php | awk '{ print "brew uninstall --force "$1}' | bash        # Remove any old version of php.
rm -rf /usr/local/Cellar/php                                                    # To be sure, manually remove the php cellar folder.
brew untap homebrew/php                                                         # Then clean any php tap (extra repo).
brew cleanup                                                                    # Cleanup and Update your brew.
brew update
brew install php                                                                # Install the latest version of php.
pecl uninstall xdebug                                                           # Clean up old xdebug.
pecl install xdebug-beta                                                        # Install the latest version of xdebug-beta (The xdebug is not compatible with 7.3 so you need to use the xdebug-beta).
php -v                                                                          # Should now say "with Xdebug v2.9.4, Copyright (c) 2002-2020, by Derick Rethans"

1

Catalina

从Catalina(Mac OS 10.15)开始,PHP似乎已经预装(使用php -v检查)。它可以随着Xcode或其他软件一起安装(我不确定)。但是我昨天刚安装了Catalina并且还没有安装Homebrew,同时xdebug也可用。我只需要重命名/etc/php.ini.default并添加这一行。

zend_extension = /usr/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so

0

看起来仓库已经移动了,但是你可以在这里找到它,并且还有说明如何通过Homebrew访问它。


这个安装程序会同时安装PHP和XDebug吗?我只想要XDebug,该怎么做?我已经有了PHP。 - sehummel
@shummel7845:我不确定,但是我不太认为。 - mipadi
@sehummel 请尝试使用 --without-homebrew-php 标志进行编译。 - yihangho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接