问题描述
我的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效果很好。