如何在 Ubuntu 22.04|20.04|18.04 上安装 PHP 8.1
PHP 是一种广泛使用的脚本和 Web 开发编程语言,最初由丹麦裔加拿大程序员 Rasmus Lerdorf 于 1994 年创建。如果安装了 PHP 运行环境,PHP 脚本可以在 Linux、Windows 和 macOS 上执行。 PHP 8.1 的正式发布日期是 2021 年 11 月 25 日。在此版本中,相对于其前身 (PHP 8.0),有许多新功能、改进和弃用。在本文中,我们讨论如何在 Ubuntu 22.04|20.04 上安装 PHP 8.1 |18.04。 Ubuntu 操作系统可以是桌面版或服务器版。
以下是 PHP 8.1 版本中出现的新关键功能的总结列表:
- 只读属性 – 类属性可以标记为只读,因此只能写入一次
- 支持 DNS-over-HTTPS (DoH)
- AVIF 图像格式支持 - PHP 8.1 的图像处理和 GD 扩展增加了对 AVIF 图像的支持。
- 从不返回类型 – PHP 8.1 中添加了名为 never 的新返回类型提示
- 增加了对 Fibers 的支持 – 管理并行性的低级机制
- PHP 8.1 添加 array_is_list 作为内置函数
- 使用 CURLStringFile 进行文件上传 – 在 PHP 8.1 中,PHP Curl 扩展现在支持带有文件上传的 HTTP(S) 请求
- 枚举 – 它们现已添加到 PHP 8.1 中
- 新的 fdatasync() 和 fsync() 函数
- Sodium XChaCha20 的新功能
- 添加纯交叉类型功能
- 显式八进制数字表示法
- 定义最终类常量
- MurmurHash3 哈希算法支持
- 交叉口类型
- xxHash 哈希算法支持
- 有关详细信息,请阅读官方 PHP 8.1 说明
第1步:更新Ubuntu系统
让我们开始在 Ubuntu 22.04|20.04|18.04 上安装 PHP 8.1,确保系统已更新和升级。
sudo apt update && sudo apt -y upgrade
成功升级操作系统后,我建议您重新启动系统:
sudo systemctl reboot
第 2 步:添加 Ondřej Surý PPA 存储库
Ubuntu 22.04 在操作系统上游存储库中具有 PHP 8.1 软件包及其扩展。因此,Ubuntu 22.04 上不需要 Sury 存储库。
对于 Ubuntu 20.04/18.04,Ondřej Surý PPA 存储库中提供了 PHP 8.1 二进制包。必须在系统上手动添加此存储库。
添加 Ondřej Surý PPA 存储库
sudo apt update
sudo apt install lsb-release ca-certificates apt-transport-https software-properties-common -y
sudo add-apt-repository ppa:ondrej/php
您唯一的输入是点击
Debian oldstable and stable packages are provided as well: https://deb.sury.org/#debian-dpa
You can get more information about the packages at https://deb.sury.org
IMPORTANT: The <foo>-backports is now required on older Ubuntu releases.
BUGS&FEATURES: This PPA now has a issue tracker:
https://deb.sury.org/#bug-reporting
CAVEATS:
1. If you are using php-gearman, you need to add ppa:ondrej/pkg-gearman
2. If you are using apache2, you are advised to add ppa:ondrej/apache2
3. If you are using nginx, you are advised to add ppa:ondrej/nginx-mainline
or ppa:ondrej/nginx
PLEASE READ: If you like my work and want to give me a little motivation, please consider donating regularly: https://donate.sury.org/
WARNING: add-apt-repository is broken with non-UTF-8 locales, see
https://github.com/oerdnj/deb.sury.org/issues/56 for workaround:
# LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
More info: https://launchpad.net/~ondrej/+archive/ubuntu/php
Press [ENTER] to continue or Ctrl-c to cancel adding it. <Press-Enter-Key>
从 Ubuntu 系统上配置的源中提取最新的软件包列表:
$ sudo apt update
Hit:1 http://ppa.launchpad.net/ondrej/php/ubuntu focal InRelease
Hit:2 http://security.ubuntu.com/ubuntu focal-security InRelease
Hit:3 http://nova.clouds.archive.ubuntu.com/ubuntu focal InRelease
Hit:4 http://nova.clouds.archive.ubuntu.com/ubuntu focal-updates InRelease
Hit:5 http://nova.clouds.archive.ubuntu.com/ubuntu focal-backports InRelease
Reading package lists... Done
Building dependency tree
Reading state information... Done
109 packages can be upgraded. Run 'apt list --upgradable' to see them.
步骤 3:安装 PHP 8.1
我们现在应该能够在 Ubuntu 22.04|20.04|18.04 Linux 机器上安装 PHP 8.1。要运行的命令共享如下:
sudo apt install php8.1
按y键开始安装:
The following additional packages will be installed:
apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php8.1 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libjansson4 liblua5.2-0 php-common php8.1-cli php8.1-common
php8.1-opcache php8.1-readline ssl-cert
Suggested packages:
apache2-doc apache2-suexec-pristine | apache2-suexec-custom www-browser php-pear openssl-blacklist
The following NEW packages will be installed:
apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php8.1 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libjansson4 liblua5.2-0 php-common php8.1 php8.1-cli
php8.1-common php8.1-opcache php8.1-readline ssl-cert
0 upgraded, 18 newly installed, 0 to remove and 109 not upgraded.
Need to get 6589 kB of archives.
After this operation, 29.4 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
使用以下命令检查当前活动的 PHP 版本:
$ php --version
PHP 8.1.0 (cli) (built: Nov 23 2021 18:56:11) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.0, Copyright (c) Zend Technologies
with Zend OPcache v8.1.0, Copyright (c), by Zend Technologies
步骤 4:安装 PHP 8.1 扩展
在 Ubuntu 22.04|20.04|18.04 上安装 PHP 8.1 扩展的命令是:
sudo apt install php8.1-<extension>
在哪里
将替换为要安装的 PHP 扩展的名称。例如,mysql、zip、xml ETC。
一些可用的扩展如下所示:
$ sudo apt install php8.1-<TAB>
php8.1-amqp php8.1-decimal php8.1-grpc php8.1-maxminddb php8.1-opcache php8.1-redis php8.1-tidy php8.1-yac
php8.1-apcu php8.1-dev php8.1-igbinary php8.1-mbstring php8.1-pcov php8.1-rrd php8.1-uopz php8.1-yaml
php8.1-ast php8.1-ds php8.1-imagick php8.1-mcrypt php8.1-pgsql php8.1-smbclient php8.1-uploadprogress php8.1-zip
php8.1-bcmath php8.1-enchant php8.1-imap php8.1-memcache php8.1-phpdbg php8.1-snmp php8.1-uuid php8.1-zmq
php8.1-bz2 php8.1-fpm php8.1-inotify php8.1-memcached php8.1-protobuf php8.1-soap php8.1-vips php8.1-zstd
php8.1-cgi php8.1-gd php8.1-interbase php8.1-mongodb php8.1-ps php8.1-solr php8.1-xdebug
php8.1-cli php8.1-gearman php8.1-intl php8.1-msgpack php8.1-pspell php8.1-sqlite3 php8.1-xhprof
php8.1-common php8.1-gmagick php8.1-ldap php8.1-mysql php8.1-psr php8.1-ssh2 php8.1-xml
php8.1-curl php8.1-gmp php8.1-lz4 php8.1-oauth php8.1-raphf php8.1-swoole php8.1-xmlrpc
php8.1-dba php8.1-gnupg php8.1-mailparse php8.1-odbc php8.1-readline php8.1-sybase php8.1-xsl
安装常用 PHP 扩展的示例:
sudo apt install php8.1-{bcmath,xml,fpm,mysql,zip,intl,ldap,gd,cli,bz2,curl,mbstring,pgsql,opcache,soap,cgi}
要列出所有 PHP 8.1 加载的模块,请运行以下命令:
$ php --modules
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dom
exif
FFI
fileinfo
filter
ftp
gd
gettext
hash
iconv
intl
json
ldap
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_pgsql
pgsql
Phar
posix
readline
Reflection
session
shmop
SimpleXML
soap
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
如果将 PHP 与 Nginx Web 浏览器一起使用,请确保 php-fpm 服务已启动并正在运行:
$ systemctl status php*-fpm.service
● php8.1-fpm.service - The PHP 8.1 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php8.1-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2021-11-20 19:40:34 UTC; 59s ago
Docs: man:php-fpm8.1(8)
Process: 25095 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.1/fpm/pool.d/www.conf 81 (code=exited, status=0/SUCCESS)
Main PID: 25091 (php-fpm8.1)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 3 (limit: 2344)
Memory: 10.9M
CGroup: /system.slice/php8.1-fpm.service
├─25091 php-fpm: master process (/etc/php/8.1/fpm/php-fpm.conf)
├─25093 php-fpm: pool www
└─25094 php-fpm: pool www
Nov 20 19:40:34 ubuntu-01 systemd[1]: Starting The PHP 8.1 FastCGI Process Manager...
Nov 20 19:40:34 ubuntu-01 php-fpm8.1[25091]: [20-Nov-2021 19:40:34] NOTICE: PHP message: PHP Warning: PHP Startup: ^(text/|application/xhtml\+xml) (offset=0): unrecognised compile-time optio>
Nov 20 19:40:34 ubuntu-01 systemd[1]: Started The PHP 8.1 FastCGI Process Manager.
PHP-FPM默认配置文件设置监听socket、用户等信息位于:
$ ls -1 /etc/php/8.1/fpm/
conf.d
php-fpm.conf
php.ini
pool.d
$ sudo vim /etc/php/8.1/fpm/pool.d/www.conf
$ sudo vim /etc/php/8.1/fpm/php-fpm.conf
在本教程中,我们已经能够在 Ubuntu 22.04|20.04|18.04 桌面/服务器操作系统上安装 PHP 8.1。总体而言,PHP 8.1 看起来很有前途,具有更好的安全性、性能以及巨大的改进和新功能,使开发人员能够轻松而喜爱地创建应用程序。我们希望本指南对您有很大帮助。如果您需要任何帮助,请随时发表评论。
其他系统上的 PHP 8.1 安装:
- 在 Debian 上安装 PHP 8.1
- 在 Rocky Linux 8|AlmaLinux 8|CentOS 8 上安装 PHP 8.1