虽然现在已经是 PHP8 时代,但国内的很多应用还是仅支持 PHP7,所以不得不给 Ubuntu 22.04 安装 7.4 版本的 PHP。

# 先更新软件源并升级
sudo apt update && sudo apt upgrade -y

# 安装software-properties-common软件管理器(这一步不是必须,有些发行版本已经安装好了)
sudo apt install software-properties-common

# 增加 ondrej/php PPA,提供了多个 PHP 版本
sudo add-apt-repository ppa:ondrej/php

# 再次更新
sudo apt update

此时,就可以使用 apt 安装 php7.4 了。

笔者使用的是 Nginx + PHP-FPM 的模式,所以只安装 fpm 及相关扩展,默认的 apt install php7.4 会带上 apache 相关的组件。

sudo apt install -y php7.4-fpm php7.4-mysql php7.4-dev \
php7.4-redis php7.4-gd php7.4-mbstring php7.4-zip \
php7.4-curl php7.4-sqlite3 php7.4-xml php7.4-yaml \
php7.4-decimal php7.4-http php7.4-imagick php7.4-bcmath \
php7.4-raphf php7.4-xmlrpc 

安装成功即可。

nginx 的 fastcgi_pass 配置也需要跟着修改:

fastcgi_pass  unix:/run/php/php7.4-fpm.sock;

安装好 php-7.4 后,并不会与已安装的 8.1 冲突,可以和平共处。

当然,如果要在命令行中使用 php7.4,还需要指定指定的二进制文件的完整路径。

/usr/bin/php7.4 -v

切换终端的 php 版本

# 列出可用的 php 版本
sudo update-alternatives --config php

# 列出可用版本时,会询问选择哪个版本作为默认版本

# 将 php 版本切换为新安装的 7.4
sudo update-alternatives --set php /usr/bin/php7.4

一个小问题

最终测试了一下 php -v,显示 7.4 版本了。但报了一个错:

PHP Warning: Cannot load module 'http' because required module 'propro' is not loaded in Unknown on line 0

看起来是无法加载 http 模块,因为依赖的 propro 模块没有安装,于是安装之:

apt install php7.4-propro

再次执行 php -v,问题解决。

标签: ubuntu, php