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

问题描述

我的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给出了我的PHP.ini所在的位置/usr/local/etc/PHP/7.2和加载的配置文件所在的位置/usr/local/etc/PHP/7.2/PHP.ini

在浏览器中,Mamp的PHPinfo给出了这些路径:

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安装的文件。另一方面,您的终端将执行相反的操作。

因此,您需要通过将其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效果很好。