使用自制软件更新 php 导致并发症

Updating php with homebrew led to complications

我的 php 版本是 7.1.33,但为了安装特定的 Laravel 项目,我至少需要 7.2 版本。我正在使用安装了 High Sierra (10.13) 的 Mac。 所以我安装了自制软件,然后安装了这个:

brew install php@7.2
echo 'export PATH="/usr/local/opt/php@7.2/bin:$PATH"' >> ~/.bash_profile
brew link php@7.2

根据php -v(在laravel项目的目录下)我的版本是7.2.33,MAMP使用的是7.2.8,所以我觉得可以。

which php 告诉我:/usr/local/bin/php

php --ini 给了我 /usr/local/etc/php/7.2 我的 php.ini 和 /usr/local/etc/php/7.2/php.ini 加载的配置文件所在的位置。

在浏览器中 phpMamp 的信息给了我这些路径:

php.ini: /Applications/MAMP/bin/php/php7.2.8/conf
加载的配置文件:/Applications/MAMP/bin/php/php7.2.8/conf/php.ini

在上述项目中尝试 'composer install' 时,出现无法安装某些扩展的错误。此扩展名列在 Mamp 的 php.ini 中,但不在终端给我的 /usr/local/etc/php/7.2/php.ini 中。

我很困惑如何解决这个问题,我是不是没能正确安装 php 7.2?
有谁知道在安装项目的作曲家时到底出了什么问题或如何在终端中使用正确的 php.ini(Mamp 的,其中列出了扩展名)?

如果你只是想忽略作曲家的错误;将平台配置添加到您的 composer.json.

例如:

{
    "config": {
        "platform": {
            "ext-mailparse": "1.0",
            "ext-intl": "1",
            "lib-icu": "4.2.1",
            "php": "7.4.8",
            "ext-gettext": "1"
        }
    },
    "require": {
    ...
    }
}

事实是,MAMP 将使用自己的 PHP 版本和配置文件,而忽略 brew-installed 的版本和配置文件。另一方面,您的终端会做相反的事情。

因此您需要通过将其 bin 文件夹添加到路径来告诉您的系统使用 MAMP php:

brew unlink php@7.2
export PATH="/Applications/MAMP/bin/php/php7.2.8/bin:$PATH" >> ~/.bash_profile

注意:您应该从您的路径中删除 /usr/local/opt/php@7.2/bin,检查您的 ~/.bash_profile 文件


如果你想保持系统 php 和 MAMP php 分开,你可以为 mamp PHP:

使用不同的命令别名
alias phpmamp="/Applications/MAMP/bin/php/php7.2.8/bin/php"

然后使用它调用作曲家:

phpmamp composer install

我只是手动安装了我需要的扩展,更新 php 工作正常。