MacOS下PHP7.1升级到PHP7.4.15的方法
最近写SDK的时候需要用到object类型提示符,PHPStorm智能提示说需要PHP7.2以上才能支持这种类型提示。
我一查我本机的PHP是7.1.30版本,于是考虑升级一下PHP版本。
首先要尝试使用如下命令进行升级:
brew update
brew upgrade php@7.4
第一个遇到的报错如下所示:
- git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
- This restriction has been made on GitHub's request because updating shallow
- clones is an extremely expensive operation due to the tree layout and traffic of
- Homebrew/homebrew-core and Homebrew/homebrew-cask. We don't do this for you
- automatically to avoid repeatedly performing an expensive unshallow operation in
- CI systems (which should instead be fixed to not use shallow clones). Sorry for
- the inconvenience!
然后按照提醒执行"git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow"命令还会报错:
fatal: dumb http transport does not support shallow capabilities
由此怀疑homebrew-core的源可能因为一些不可抗力的原因无法正常使用,从而导致fetch操作失败。可以考虑换成国内的源,编写shell如下所示:
- # 切换到homebrew-core目录下
- cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
- # 设置homebrew源为国内的中科大镜像
- git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
- # 更新homebrew-core
- git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
执行之后可以看到如下输出,然后就可以顺利执行brew update了。
remote: Enumerating objects: 539863, done.
remote: Counting objects: 100% (539826/539826), done.
remote: Compressing objects: 100% (194417/194417), done.
remote: Total 530481 (delta 341532), reused 521981 (delta 333211)
Receiving objects: 100% (530481/530481), 191.29 MiB | 9.18 MiB/s, done.
Resolving deltas: 100% (341532/341532), completed with 8120 local objects.
安装php7.4的方法很简单,可以使用源码下载编译的方法:
brew install --build-from-source php@7.4
可以看到大量输出,最后没有报错就可以完成php7.4的安装啦。
要让终端里面之前的PHP版本切换成功还需要在.bash_profile中设置环境变量,添加如下语句:
export PATH="/usr/local/opt/php@7.4/bin:$PATH"
export PATH=<a>/usr/local/opt/php@7.4/sbin:$PATH</a>
最后执行source ~/.bash_profile命令完成生效操作。
为了确认是否真的生效,可以执行如下命令php -v
得到输出如下即为正确:
- PHP 7.4.15 (cli) (built: Feb 21 2021 20:08:10) ( NTS )
- Copyright (c) The PHP Group
- Zend Engine v3.4.0, Copyright (c) Zend Technologies
- with Zend OPcache v7.4.15, Copyright (c), by Zend Technologies