MacOS下PHP7.1升级到PHP7.4.15的方法

最近写SDK的时候需要用到object类型提示符,PHPStorm智能提示说需要PHP7.2以上才能支持这种类型提示。

我一查我本机的PHP是7.1.30版本,于是考虑升级一下PHP版本。

首先要尝试使用如下命令进行升级:

brew update

brew upgrade php@7.4

第一个遇到的报错如下所示:

  1. git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
  2. This restriction has been made on GitHub's request because updating shallow
  3. clones is an extremely expensive operation due to the tree layout and traffic of
  4. Homebrew/homebrew-core and Homebrew/homebrew-cask. We don't do this for you
  5. automatically to avoid repeatedly performing an expensive unshallow operation in
  6. CI systems (which should instead be fixed to not use shallow clones). Sorry for
  7. 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如下所示:

  1. # 切换到homebrew-core目录下
  2. cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
  3. # 设置homebrew源为国内的中科大镜像
  4. git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
  5. # 更新homebrew-core
  6. 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

得到输出如下即为正确:

  1. PHP 7.4.15 (cli) (built: Feb 21 2021 20:08:10) ( NTS )
  2. Copyright (c) The PHP Group
  3. Zend Engine v3.4.0, Copyright (c) Zend Technologies
  4. with Zend OPcache v7.4.15, Copyright (c), by Zend Technologies