PHP 是世界上使用广泛的服务端编程语言之一。很多著名的 CMS 和框架,例如 WordPress, Magento, 和 Laravel 都是基于 PHP 构建的。
在这篇指南中,我们将会讨论如何在 CentOS 8 上安装 PHP 7.2, 7.3, 或者 7.4。在选择安装哪个版本 PHP 之前,请确认你的应用支持它。
CentOS 8 是和 PHP7.2 一起发布的。这个版本支持大部分现代的 PHP 应用,但是到 2019 年 11 月将不在被维护。更新的 PHP 版本请浏览:Remi repository
一、 启用 Remi 源仓库
如果你要安装 PHP 的稳定版本 7.2,请忽略这一步。否则,如果你要安装 PHP7.3 或者 7.4,请使用 root 或者其他有 sudo 权限的用户身份运行下面的命令,启用 Remi 源仓库:
sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
上面的命令同样也能启用EPEL 软件源仓库。
一旦上面的安装完成,运行下面的命令,获取所有可用的 PHP 版本:
sudo dnf module list php
输出将会显示一系列所有可用的模块,包括关联的版本,和安装剖面。
Last metadata expiration check: 0:02:11 ago on Fri 18 Oct 2019 08:31:43 PM UTC.
CentOS-8 - AppStream
Name Stream Profiles Summary
php 7.2 [d][e] common [d], devel, minimal PHP scripting language
Remi's Modular repository for Enterprise Linux 8 - x86_64
Name Stream Profiles Summary
php remi-7.2 common [d], devel, minimal PHP scripting language
php remi-7.3 common [d], devel, minimal PHP scripting language
php remi-7.4 common [d], devel, minimal PHP scripting language
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
默认的 PHP 模块被设置为 PHP 7.2 。 想要安装最新的 PHP 发行版,启用合适的版本:
PHP 7.3
sudo dnf module reset php
sudo dnf module enable php:remi-7.3
PHP 7.4
sudo dnf module reset php
sudo dnf module enable php:remi-7.4
你现在准备在你的 CentOS 服务器上安装 PHP。
下面的命令将会安装 PHP 和其他一些最普通的 PHP 模块:
sudo dnf install php php-opcache php-gd php-curl php-mysqlnd
FPM 被作为 PHP 依赖安装,并且被用作 FastCGI 服务器。启动 FPM 服务器并且启用开机启动:
sudo systemctl enable --now php-fpm
如果你正在使用 Apache 作为你的网页服务器,使用下面的命令重启httpd
服务:
sudo systemctl restart httpd
默认情况下,PHP FPM 以 apache
用户运行。为了避免权限问题,我们将用户改为nginx
。想要这么做,编辑下面的内容:
sudo nano /etc/php-fpm.d/www.conf
...
user = nginx
...
group = nginx
确保/var/lib/php
目录拥有正确的用户身份:
chown -R root:nginx /var/lib/php
一旦修改好,重启 PHP FPM 服务:
sudo systemctl restart php-fpm
下一步,编辑 Nginx 虚拟主机指令,添加下面的代码块以便 Nginx 可以处理 PHP 文件:
server {
# . . . other code
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
想要新的配置起作用,重启 Nginx 服务:
sudo systemctl restart nginx
PHP 7.2 可以从默认的 CentOS 8 源仓库中安装。如果你想要安装最近的版本,你可以启用 Remi 源仓库。