如何在 CentOS 8 上为 Nginx 安装 PHP 7.x
PHP(超文本预处理器)是一种用于创建动态网站的开源脚本语言。PHP 代码在 Nginx、Apache 等 Web 服务器上运行。本页介绍如何在 CentOS 8 Linux 服务器上安装 PHP 7.x(7.2/7.3/7.4)以及 Nginx Web 服务器。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 是的 |
要求 | Linux 终端 |
类别 | 包管理器 |
操作系统兼容性 | Alma • Arch • CentOS • RHEL • Rocky • Stream |
预计阅读时间 | 9 分钟 |
如何在 CentOS 8 上安装 PHP 7.x
- 打开终端应用程序并登录远程 CentOS 8 服务器
- 更新 CentOS 8 框,运行sudo yum update
- 搜索 PHP 版本,运行sudo yum search php
- 安装并启用 PHP 7.4 的 Remi 仓库,运行sudo yum install yum-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
- 在 CentOS 8 上安装 PHP 7.2.11或7.4以及 Nginx 的 FastCGI 模块,执行:sudo yum install php php-fpm
- 配置 Nginx 以使用 PHP
- 使用以下方式搜索并安装用于图形和数据库支持的附加 PHP 模块sudo yum search php-
- 启用并重新启动 PHP 和 Nginx 服务器
- 测试并验证 PHP 安装
让我们详细了解所有命令。
步骤 1——更新 CentOS 8
运行以下yum 命令或 dnf 命令:如果安装了新内核,
sudo yum update
请重新启动 Linux 系统:
sudo reboot
第 2 步 - 在 CentOS 8 上搜索 PHP 版本
让我们找出 CentOS Enterprise Linux 8 服务器上的 PHP 版本,执行:
sudo yum search php-
您的系统上可能安装了多个版本的 PHP。只需运行以下命令即可验证:
sudo yum module list php
会话
Last metadata expiration check: 0:06:14 ago on Wed Oct 28 07:43:38 2020. CentOS-8 - AppStream Name Stream Profiles Summary php 7.2 [d] common [d], devel, minimal PHP scripting language php 7.3 common [d], devel, minimal PHP scripting language Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
以下示例表示可以安装 PHP 版本 7.2、7.3 和 7.4:
sudo yum module list php
示例输出:
Last metadata expiration check: 0:00:05 ago on Mon Dec 16 13:28:05 2019.
CentOS-8 - AppStream
Name Stream Profiles Summary
php 7.2 [d] 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 版本 7.2 将按照[d]标志的指示进行安装。
关于在 CentOS 8 上启用不同版本的 PHP(例如 7.3 和 7.4)的说明
我强烈建议在生产 Web 应用中使用默认的 PHP 版本 7.2。但是,如果您需要 PHP 版本7.3 或 7.4,请输入以下命令来启用 Remi 的存储库:
sudo yum install yum-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
启用默认版本
默认 PHP 版本锁定为 PHP 7.2。最好运行 enable 命令来设置所需的 PHP 版本。换句话说,要启用PHP 版本 7.4,请运行:
sudo yum module list php
sudo yum module reset php
sudo yum module enable php:remi-7.4
## verify it php set to 7.4 ##
sudo yum module list php
想要在 CentOS 8 Linux 上安装 PHP 7.4?启用 Remi repo 并使用 yum 设置默认值
sudo yum module list php
sudo yum module reset php
sudo yum module enable php:remi-7.3
## verify it php set to 7.3 ##
sudo yum module list php
步骤 3 – 在 CentOS 8 上安装 PHP
现在已经设置了 PHP 版本,是时候通过输入以下命令在你的 CentOS 8 云服务器上安装 PHP 7.x 了:
sudo yum install php php-fpm
如果你不想将 Apache(httpd)安装为依赖项,请运行:
sudo yum install php-fpm php-common php-cli
现在是时候验证和检查 PHP 版本了,输入:
php -v
php --version
启用 php-fpm 服务
键入以下 systemctl 命令:
sudo systemctl enable php-fpm.service
启动 php-fpm 服务,运行:
查看如何重新加载/启动/重新启动 PHP-fpm 服务以获取更多信息:
sudo systemctl start php-fpm.service
sudo systemctl status php-fpm.service
sudo systemctl stop php-fpm.service
sudo systemctl restart php-fpm.service
如何配置 PHP 与 Nginx 服务器协同工作
首先,使用cat 命令
找出 PHP-FPM FastCGI 服务器配置的位置,cat /etc/nginx/conf.d/php-fpm.conf
确保 Unix 套接字已启动并正在运行,运行:
ls -l /run/php-fpm/www.sock
我的 CentOS 8 带有 Nginx 的 php-fpm 配置:
cat /etc/nginx/default.d/php.conf
index index.php index.html index.htm; location ~ \.php$ { try_files $uri =404; fastcgi_intercept_errors on; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass php-fpm; }
重新启动 nginx 服务/服务器
再次运行 systemctl 命令:
sudo systemctl restart nginx.service
验证 php 版本。要查找 PHP 版本,请输入:
php --version
PHP 7.4.7 (cli) (built: Jun 9 2020 10:57:17) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.7, Copyright (c), by Zend Technologies
所以我使用的是 PHP 版本 7.4.7。
测试并验证 PHP 7.x 是否与 Nginx 一起在 CentOS 8 上运行
创建一个新文件,如下所示:
sudo vi /usr/share/nginx/html/hello.php
附加以下 PHP 代码:
<?php echo "Hello, world!\n"; ?>
在 vim 中保存并关闭文件。使用 curl 命令运行如下
curl -I http://localhost/hello.php
curl http://localhost/hello.php
示例 demo.php 程序
接下来创建一个新文件,如下所示:
sudo vi /usr/share/nginx/html/demo.php
附加以下代码:
<?php phpinfo(); ?>
保存并关闭文件。打开 Web 浏览器并输入以下 URL:
http://your-domain-OR-ip/hello.php
http://192.168.2.254/hello.php
http://192.168.2.254/demo.php
如何安装额外的 php 模块
尝试按如下方式搜索并安装其他模块:
sudo yum search php-
sudo yum search php- | grep mysql
sudo yum search php74- ## for version 7.2 ##
sudo yum search php74- ## for version 7.3 ##
sudo yum search php74- ## for version 7.4 ##
======================== Summary & Name Matched: php74- ======================== php74-php-zephir-parser-devel.x86_64 : php74-php-zephir-parser developer files ============================= Name Matched: php74- ============================= php74-php.x86_64 : PHP scripting language for creating dynamic web sites php74-build.x86_64 : Package shipping basic build configuration php74-php-gd.x86_64 : A module for PHP applications for using the gd graphics php74-xhprof.noarch : A Hierarchical Profiler for PHP - Web interface php74-zephir.noarch : Zephir language for creation of extensions for PHP. php74-php-ast.x86_64 : Abstract Syntax Tree php74-php-cli.x86_64 : Command-line interface for PHP php74-php-dba.x86_64 : A database abstraction layer module for PHP applications php74-php-dbg.x86_64 : The interactive PHP debugger php74-php-ffi.x86_64 : Foreign Function Interface php74-php-fpm.x86_64 : PHP FastCGI Process Manager php74-php-gmp.x86_64 : A module for PHP applications for using the GNU MP php74-php-lz4.x86_64 : LZ4 Extension for PHP php74-php-pdo.x86_64 : A database access abstraction module for PHP applications php74-php-xml.x86_64 : A module for PHP applications which use XML php74-runtime.x86_64 : Package that handles php74 Software Collection. php74-php-imap.x86_64 : A module for PHP applications that use IMAP php74-php-intl.x86_64 : Internationalization extension for PHP applications php74-php-json.x86_64 : JavaScript Object Notation extension for PHP php74-php-ldap.x86_64 : A module for PHP applications that use LDAP php74-php-oci8.x86_64 : A module for PHP applications that use OCI8 databases php74-php-odbc.x86_64 : A module for PHP applications that use ODBC databases php74-php-pear.noarch : PHP Extension and Application Repository framework php74-php-pggi.x86_64 : GTK bindings php74-php-snmp.x86_64 : A module for PHP applications that query SNMP-managed php74-php-soap.x86_64 : A module for PHP applications that use the SOAP protocol php74-php-tidy.x86_64 : Standard PHP module provides tidy library support php74-php-zstd.x86_64 : Zstd Extension for PHP php74-scldevel.x86_64 : Package shipping development files for php74 php74-unit-php.x86_64 : PHP module for NGINX Unit php74-php-devel.x86_64 : Files needed for building PHP extensions php74-php-pgsql.x86_64 : A PostgreSQL database module for PHP php74-php-pinba.x86_64 : Client extension for Pinba statistics server php74-php-bcmath.x86_64 : A module for PHP applications for using the bcmath php74-php-brotli.x86_64 : Brotli Extension for PHP php74-php-common.x86_64 : Common files for PHP php74-php-pspell.x86_64 : A module for PHP applications for using pspell php74-php-recode.x86_64 : A module for PHP applications for using the recode php74-php-snappy.x86_64 : Snappy Extension for PHP php74-php-sodium.x86_64 : Wrapper for the Sodium cryptographic library php74-php-sqlsrv.x86_64 : Microsoft Drivers for PHP for SQL Server php74-php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC php74-php-enchant.x86_64 : Enchant spelling extension for PHP applications php74-php-libvirt.x86_64 : PHP language binding for Libvirt php74-php-mysqlnd.x86_64 : A module for PHP applications that use MySQL php74-php-opcache.x86_64 : The Zend OPcache php74-php-process.x86_64 : Modules for PHP script using system process php74-php-embedded.x86_64 : PHP library for embedding in applications php74-php-mbstring.x86_64 : A module for PHP applications which need multi-byte php74-php-phalcon4.x86_64 : Phalcon Framework php74-php-componere.x86_64 : Composing PHP classes at runtime php74-php-litespeed.x86_64 : LiteSpeed Web Server PHP support php74-php-maxminddb.x86_64 : MaxMind DB Reader extension php74-php-pdo-dblib.x86_64 : PDO driver for Microsoft SQL Server and Sybase php74-php-phpiredis.x86_64 : Client extension for Redis php74-php-smbclient.x86_64 : PHP wrapper for libsmbclient php74-php-wkhtmltox.x86_64 : HTML Converter php74-php-libvirt-doc.noarch : Document of php-libvirt php74-php-snuffleupagus.x86_64 : Security module for PHP php74-php-zephir-parser.x86_64 : Zephir parser extension php74-php-horde-horde-lz4.x86_64 : Horde LZ4 Compression Extension
安装 PHP 7.x CentOS 8 模块
例如,安装图形和数据库支持,运行:
sudo yum install php-mysqlnd php-gd
CentOS 8 上的典型 WordPress 安装需要以下 PHP 扩展或模块:
sudo yum install php-mysqlnd php-gd php-pecl-zip php-mbstring php-xml php-opcache php-pecl-imagick
如何配置 PHP 7.x
您需要根据需要编辑以下文件:
- /etc/php.ini– PHP 的初始化和配置文件。请勿修改此文件。而是在 /etc/php.d/ 目录中创建 custom.ini。
- /etc/php-fpm.conf– Gloable FPM(FastCGI)配置文件。
- /etc/php-fpm.d/www.conf– FastCGI (FPM) www 池配置文件。
- /etc/php.d/– PHP 模块配置文件。
请参阅针对 Web 应用程序的最佳 PHP 安全实践以了解更多信息。
结论
现在,您已经在 CentOS 8 上安装并运行了 PHP。默认情况下,CentOS 8 Linux 上安装的是 PHP 7.2 版。但是,开发人员或系统管理员可以使用 CentOS Enterprise Linux 8 服务器的 Remi 存储库安装最新版本,例如 PHP 7.4。
- CentOS 8 上的 Nginx
- CentOS 8 上适用于 Nginx 的 PHP 7.x
- 在 CentOS 8 上为 Nginx 设置 Let's Encrypt