如何在 Ubuntu 22.04|20.04|18.04 上安装 PHP 8.0 |
PHP 是一种流行的 Web 开发脚本语言,最初由丹麦裔加拿大程序员 Rasmus Lerdorf 于 1994 年创建。创建的 PHP 脚本可以在 Linux、macOS、Windows 和许多其他安装了 PHP 的 Unix 系统上执行。
在本文中我们将讲解在Ubuntu 22.04|20.04|18.04 Linux系统上安装PHP 8.0。在我们之前的指南中,我们记录了 CentOS 8/7 上 PHP 8.0 的安装。我们的网站上还有许多其他指南,介绍如何在 Ubuntu Linux 计算机上安装和使用其他版本的 PHP。
PHP 8 的正式版本将于 2020 年 11 月 26 日发布。它是一个新的主要版本,具有许多新功能和性能改进。您还应该期待新的重大更改,这意味着可能需要对代码进行一些修改才能使其在 PHP 8 上运行。 PHP 8 附带的一些不错的新功能包括 JIT 编译器、命名参数、联合类型、属性、还有很多。
第1步:更新Ubuntu系统
通过运行以下命令将所有系统软件包更新到最新版本。
sudo apt update
sudo apt -y upgrade
任何升级后重新启动都很重要。
sudo systemctl reboot
步骤 2:添加 Ondřej Surý PPA 存储库(仅限 Ubuntu 20.04/18.04)
Ubuntu 22.04 附带 PHP 8 软件包以及 PHP 8 集成所需的许多其他扩展。对于 Ubuntu 20.04/18.04,Ondřej Surý PPA 存储库中提供了最新的 PHP 软件包。运行下面共享的命令将此存储库添加到您的 Ubuntu 系统。
Ubuntu 20.04|18.04(Ubuntu 22.04 不需要)
sudo apt update
sudo apt install lsb-release ca-certificates apt-transport-https software-properties-common -y
sudo add-apt-repository ppa:ondrej/php
当提示添加存储库时按 Enter 键:
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.
从更新输出中,您应该看到添加的存储库:
Hit:1 http://mirror.hetzner.de/ubuntu/packages focal InRelease
Hit:2 http://mirror.hetzner.de/ubuntu/packages focal-updates InRelease
Hit:3 http://mirror.hetzner.de/ubuntu/packages focal-backports InRelease
Hit:4 http://mirror.hetzner.de/ubuntu/packages focal-security InRelease
Get:5 http://ppa.launchpad.net/ondrej/php/ubuntu focal InRelease [23.9 kB]
Hit:6 http://security.ubuntu.com/ubuntu focal-security InRelease
Hit:7 http://archive.ubuntu.com/ubuntu focal InRelease
Hit:8 http://archive.ubuntu.com/ubuntu focal-updates InRelease
Hit:9 http://archive.ubuntu.com/ubuntu focal-backports InRelease
Get:10 http://ppa.launchpad.net/ondrej/php/ubuntu focal/main amd64 Packages [74.8 kB]
Get:11 http://ppa.launchpad.net/ondrej/php/ubuntu focal/main i386 Packages [20.2 kB]
Get:12 http://ppa.launchpad.net/ondrej/php/ubuntu focal/main Translation-en [28.2 kB]
Fetched 147 kB in 1s (158 kB/s)
Reading package lists... Done
步骤 3:在 Ubuntu 22.04|20.04|18.04 上安装 PHP 8
更新 APT 索引只是为了确保软件包安装正常:
sudo apt update
然后在 Ubuntu 22.04|20.04|18.04 Linux 机器上安装 PHP 8.0:
sudo apt install php8.0
按y键开始安装:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
apache2-bin libapache2-mod-php8.0 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libgdbm-compat4 libjansson4 liblua5.2-0 libmagic-mgc libmagic1
libperl5.30 perl perl-modules-5.30 php-common php8.0-cli php8.0-common php8.0-opcache php8.0-readline
Suggested packages:
apache2-doc apache2-suexec-pristine | apache2-suexec-custom www-browser php-pear file perl-doc libterm-readline-gnu-perl | libterm-readline-perl-perl make
libb-debug-perl liblocale-codes-perl
Recommended packages:
apache2
The following NEW packages will be installed:
apache2-bin libapache2-mod-php8.0 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libgdbm-compat4 libjansson4 liblua5.2-0 libmagic-mgc libmagic1
libperl5.30 perl perl-modules-5.30 php-common php8.0 php8.0-cli php8.0-common php8.0-opcache php8.0-readline
0 upgraded, 20 newly installed, 0 to remove and 7 not upgraded.
Need to get 13.0 MB of archives.
After this operation, 78.4 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
确认服务器上的默认 PHP 版本:
$ php -v
PHP 8.0.11 (cli) (built: Sep 23 2021 21:26:24) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.11, Copyright (c) Zend Technologies
with Zend OPcache v8.0.11, Copyright (c), by Zend Technologies
步骤 4:在 Ubuntu 上安装 PHP 8 扩展 <元字符集=utf-8>22.04|20.04|18.04
在 Ubuntu 上安装 PHP 8 扩展
sudo apt install php8.0-<extension>
一些可用的扩展如下所示:
$ sudo apt install php8.0-
php8.0-amqp php8.0-common php8.0-gd php8.0-ldap php8.0-odbc php8.0-readline php8.0-sqlite3 php8.0-xsl
php8.0-apcu php8.0-curl php8.0-gmp php8.0-mailparse php8.0-opcache php8.0-redis php8.0-sybase php8.0-yac
php8.0-ast php8.0-dba php8.0-igbinary php8.0-mbstring php8.0-pgsql php8.0-rrd php8.0-tidy php8.0-yaml
php8.0-bcmath php8.0-dev php8.0-imagick php8.0-memcached php8.0-phpdbg php8.0-smbclient php8.0-uuid php8.0-zip
php8.0-bz2 php8.0-ds php8.0-imap php8.0-msgpack php8.0-pspell php8.0-snmp php8.0-xdebug php8.0-zmq
php8.0-cgi php8.0-enchant php8.0-interbase php8.0-mysql php8.0-psr php8.0-soap php8.0-xhprof
php8.0-cli php8.0-fpm php8.0-intl php8.0-oauth php8.0-raphf php8.0-solr php8.0-xml
例子 :
sudo apt install php8.0-cli php8.0-common php8.0-imap php8.0-redis php8.0-snmp php8.0-xml php8.0-zip php8.0-mbstring
如果要列出所有 PHP 8.0 加载的模块,请使用以下命令:
$ php -m
如果将 PHP 与 Nginx Web 浏览器一起使用,请确保 php-fpm 服务已启动并正在运行:
$ systemctl status php*-fpm.service
● php8.0-fpm.service - The PHP 8.0 FastCGI Process Manager
Loaded: loaded (/lib/systemd/system/php8.0-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2021-11-11 11:42:07 EAT; 35s ago
Docs: man:php-fpm8.0(8)
Process: 192780 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.0/fpm/pool.d/www.conf 80 (code=exited, status=0/SUCCESS)
Main PID: 192777 (php-fpm8.0)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 3 (limit: 9482)
Memory: 10.3M
CPU: 79ms
CGroup: /system.slice/php8.0-fpm.service
├─192777 php-fpm: master process (/etc/php/8.0/fpm/php-fpm.conf)
├─192778 php-fpm: pool www
└─192779 php-fpm: pool www
Nov 11 11:42:07 ubuntu22 systemd[1]: Starting The PHP 8.0 FastCGI Process Manager...
Nov 11 11:42:07 ubuntu22 php-fpm8.0[192777]: [11-Nov-2021 11:42:07] NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library 'redis.so' (tried: /usr/lib/php/20200930/redis.so>
Nov 11 11:42:07 ubuntu22 php-fpm8.0[192777]: Created directory: /var/lib/snmp/cert_indexes
Nov 11 11:42:07 ubuntu22 systemd[1]: Started The PHP 8.0 FastCGI Process Manager.
相同的格式用于安装其他扩展。
参考:
- PHP 8 Stitcher 功能帖子
- PHP 8 发布计划
推荐阅读书籍:
- 学习 Web 开发的最佳书籍 - PHP、HTML、CSS、JavaScript 和 jQuery
- 掌握网页设计的最佳书籍
- 学习 CSS 和 CSS3 的最佳书籍
- 学习 HTML 和 HTML5 的最佳书籍
- 最佳 Apache 和 Nginx 参考书