PHP 8.1是PHP的最新版本。包括WordPress ,Drupal,Joomla和Laravel等大多数现代PHP框架和应用程序都完全支持PHP 8.1。

CentOS 8预安装PHP版本5.4,该版本已正式结束,并且不再受支持。但你可以使用PHP 8.1,使您的应用程序将加载得更快,并消耗更少的系统资源。

在本教程中,我们将说明如何在CentOS 8安装PHP 8.0,8.1,8.2等版本。我们还将向您展示如何将PHP与Nginx集成。

此外,在安装指定的PHP 8.x版本之前,请确保您的应用程序支持该版本。您以root或者具有sudo权限的用户登录到服务器。

在CentOS 8有几个不同的软件仓库提供PHP 8.x版本。我们将使用Remi提供的仓库,他还提供最新版本PHP 8.2。

Remi仓库依赖EPEL存储库。因此在启用Remi仓库之前需要先安装启用EPEL软件仓库和Remi存储库。

在启用EPEL和Remi仓库时,Yum可能会提示您导入存储库GPG密钥。输入y,然后按Enter

sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y

sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y

sudo dnf module reset php -y
sudo dnf module install php:remi-8.1 -y
sudo dnf install php81-php-fpm  -y
php -v

sudo systemctl enable php-fpm.service --now
sudo systemctl status php-fpm.service
PHP 8.1.11 (cli) (built: Sep 28 2022 09:08:05) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.11, Copyright (c) Zend Technologies

安装完成后运行php -v命令打印PHP版本,以验证PHP安装。PHP-FPM服务将会作为Systemd服务单元在后台运行。

但你需要运行一次命令sudo systemctl enable php-fpm.service --now启动PHP-FPM,之后PHP-FPM会自动启动。

如果你需要查看PHP-FPM的状态可以运行命令sudo systemctl status php-fpm.service

安装 PHP扩展

PHP扩展是已编译的动态库,它扩展了PHP的核心功能。PHP扩展程序作为软件包提供,可以通过dnf命令安装PHP扩展。

按照惯例PHP扩展的通常是以php开头,接着是版本号,然后是-和扩展名称。这是通用的格式php[version]-php-[extname]

并不是所有php扩展都可以通过dnf命令进行安装,yum仓库仅提供常用PHP扩展,某些扩展可能需要自己手动编译。

例如,要安装php-mysql和php-gd扩展,您可以运行命令sudo dnf install php81-php-gd php81-php-mysql

在安装PHP扩展之后,请不要忘记重启Apache或PHP-FPM服务,否则新的PHP扩展不会加载到PHP-FPM。运行命令sudo systemctl restart php-fpm

最后运行命令sudo systemctl status php-fpm.service打印PHP-FPM服务的状态信息,验证是否成功重启PHP-FPM。

sudo dnf install php81-php-gd php81-php-mysql -y
sudo systemctl restart php-fpm
sudo systemctl status php-fpm.service

安装 Nginx

如何在CentOS 8安装Nginx | myfreax
Nginx发音为engine x,是开源的高性能HTTP和反向代理服务器。它可用作HTTP/Web服务器,负载均衡,内容缓存和反向代理
如何在CentOS 8安装Nginx

配置 Nginx PHP

Nginx不支持直接运行PHP文件。我们将使用PHP-FPM FastCGI进程管理器来运行PHP文件。

现在使用你的喜欢的文本编辑器创建Nginx虚拟主机配置文件/etc/nginx/conf.d/example.conf目录中。

在本教程中我们将使用vim编辑器打开文件/etc/nginx/conf.d/example.conf

复制粘帖nginx虚拟主机配置到/etc/nginx/conf.d/example.conf文件中, 使Nginx可以运行PHP文件。

sudo vim /etc/nginx/conf.d/example.conf
server {
    server_name example.com;
    root /var/www/html/;
    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;
    }
}
/etc/nginx/conf.d/example.conf

保存文件并退出vim。创建Nginx虚拟主机配置后,你应该在每次修改Nginx配置文件运行nginx -t命令测试Nginx配置的语法是否正确。

如果没有错误nginx将会提示你nginx: configuration file /etc/nginx/nginx.conf test is successful

当测试Nginx配置正确之后,不要忘记运行systemctl命令重新启动Nginx服务,运行命令sudo systemctl restart nginx使nginx配置文件生效。

为了能够正确解释域名example.com。因此我们还需要映射example.com本地回环地址127.0.0.1

运行命令echo "127.0.0.1 example.com" | sudo tee -a /etc/hosts

sudo nginx -t
sudo systemctl restart nginx
echo "127.0.0.1 example.com" | sudo tee -a /etc/hosts

phpinfo 页面

要测试是否已正确配置Web服务器运行PHP,请在/var/www/html目录中创建一个名为info.php的新文件。然后保存文件并退出vim。

保存文件后,我们还需要使用chmod命令info.php具有可执行权限。运行命令sudo chmod +x /var/www/html/info.php

Nginx必须对站点的根目录有读取权限,对于可执行文件,例如php。nginx必须对其有可执行权限,否则nginx返回500内部服务器的错误。

sudo vim /var/www/html/info.php
sudo chmod +x /var/www/html/info.php
<?php
phpinfo();
/var/www/html/info.php

打开你的浏览器,然后访问http://example.com/info.php。您将看到您的PHP配置的信息。

如何在CentOS 8安装MariaDB | myfreax
MariaDB是一个开源关系数据库管理系统,向后兼容MySQL,你可以使用MariaDB直接替代MySQL。它由MySQL原始开发人员和社区共同开发
CentOS 8 安装 MariaDB
如何在CentOS 8安装MySQL | myfreax
MySQL是最流行的开源关系数据库管理系统。可从默认的CentOS 8存储库安装最新版本的MySQL 8.0数据库服务器
CentOS 8 安装 MySQL
如何在CentOS 8配置Nginx虚拟主机 | myfreax
server是Nginx指令,用于定义指定域名的配置置,从而使您可以在一台服务器上运行多个网站
CentOS 8 配置Nginx虚拟主机

结论

您已经了解了如何在CentOS 8安装PHP 8.1以及如何配置nginx服务器以能够处理PHP文件。如果您有任何疑问或反馈,请随时发表评论。