PHP 是一种服务器端 脚本语言 。 PHP 用于开发静态或动态网站或 Web 应用程序。 许多流行的 CMS ,如 WordPress、 Magento 和 Joomla 都是用 PHP 编写的。 Laravel 、 Symfony 和 CodeIgniter 等框架也在使用 PHP。
PHP最新版本为PHP 8.1.3,然而与PC软件不同,服务器端软件不是版本越高越好,特别是在生产环境中,因此在选择服务器软件版本时一定要慎重。
对于 WordPress 来说,根据官方说明(#php-extensions),推荐的配置为:
- Apache HTTPD 2.4 或者 nginx 1.20 / 1.19
- PHP 7.4及更高版本
- MySQL 5.6 / 5.7 / 8.0 或者 MariaDB 10.5 / 10.4 / 10.3 / 10.2
不过WordPress目前还不能全部兼容PHP 8.0或者8.1,参考这里()。这是因为PHP 8.0 是对 2020 年 11 月 26 日发布的 PHP 语言的重大更新,与现有的 PHP 7.4 版本相比是一个巨大的飞跃。 新的 PHP 包含许多新特性和优化,包括命名参数、联合类型、属性、构造函数属性提升、匹配表达式、空安全运算符、JIT 和类型系统的改进、错误处理和一致性。
因此还是建议安装PHP 7.4
检查
首先检查系统中是否安装了PHP,运行下面的命令,如果出现下面的提示,表明系统中没有安装PHP。
# php -v
-bash: php: command not found
Rocky Linux AppStream 存储库提供默认启用的 PHP 7.2 版本。 要想获取所有 PHP 模块的列表,请运行下面的命令。
# dnf module list php
Last metadata expiration check: 2:28:32 ago on Sat 19 Feb 2022 06:40:14 AM EST.
Rocky Linux 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
php 7.4 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
php remi-8.0 common [d], devel, minimal PHP scripting language
php remi-8.1 common [d], devel, minimal PHP scripting language
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
安装PHP 7.4
由于默认的PHP版本为7.2,要想安装php 7.4,首先使能这个模块,然后输入y
# dnf module enable php:7.4
Last metadata expiration check: 2:30:10 ago on Sat 19 Feb 2022 06:40:14 AM EST.
Dependencies resolved.
========================================================================================================================
Package Architecture Version Repository Size
========================================================================================================================
Enabling module streams:
nginx 1.14
php 7.4
Transaction Summary
========================================================================================================================
Is this ok [y/N]:
如果搭建WordPress网站,根据上面提到的官网说明,那么需要安装以下PHP扩展。
dnf install php php-json php-mysqlnd php-curl php-dom php-exif php-fileinfo php-hash php-imagick php-mbstring php-openssl php-pcre php-xml php-zip php-bcmath php-filter php-gd php-iconv php-intl php-mcrypt php-simplexml php-sodium php-xmlreader php-zlib php-ssh2 php-ftp php-sockets php-cli
不过有些模块提示找不到
Error: Unable to find a match: php-imagick php-mcrypt php-sodium php-ssh2
去掉上面4个模块
dnf install php php-json php-mysqlnd php-curl php-dom php-exif php-fileinfo php-hash php-mbstring php-openssl php-pcre php-xml php-zip php-bcmath php-filter php-gd php-iconv php-intl php-simplexml php-xmlreader php-zlib php-ftp php-sockets php-cli
安装结果如下
Last metadata expiration check: 3:03:18 ago on Sat 19 Feb 2022 06:40:14 AM EST.
Dependencies resolved.
========================================================================================================================
Package Architecture Version Repository Size
========================================================================================================================
Installing:
php x86_64 7.4.19-1.module+el8.5.0+696+61e7c9ba appstream 1.5 M
php-bcmath x86_64 7.4.19-1.module+el8.5.0+696+61e7c9ba appstream 79 k
php-cli x86_64 7.4.19-1.module+el8.5.0+696+61e7c9ba appstream 3.1 M
php-common x86_64 7.4.19-1.module+el8.5.0+696+61e7c9ba appstream 701 k
php-gd x86_64 7.4.19-1.module+el8.5.0+696+61e7c9ba appstream 84 k
php-intl x86_64 7.4.19-1.module+el8.5.0+696+61e7c9ba appstream 192 k
php-json x86_64 7.4.19-1.module+el8.5.0+696+61e7c9ba appstream 73 k
php-mbstring x86_64 7.4.19-1.module+el8.5.0+696+61e7c9ba appstream 483 k
php-mysqlnd x86_64 7.4.19-1.module+el8.5.0+696+61e7c9ba appstream 192 k
php-pecl-zip x86_64 1.18.2-1.module+el8.4.0+415+e936cba3 appstream 54 k
php-xml x86_64 7.4.19-1.module+el8.5.0+696+61e7c9ba appstream 173 k
Installing dependencies:
libzip x86_64 1.6.1-1.module+el8.4.0+415+e936cba3 appstream 63 k
nginx-filesystem noarch 1:1.14.1-9.module+el8.4.0+542+81547229 appstream 23 k
oniguruma x86_64 6.8.2-2.el8 appstream 186 k
php- PDO x86_64 7.4.19-1.module+el8.5.0+696+61e7c9ba appstream 122 k
Installing weak dependencies:
php-fpm x86_64 7.4.19-1.module+el8.5.0+696+61e7c9ba appstream 1.6 M
php-opcache x86_64 7.4.19-1.module+el8.5.0+696+61e7c9ba appstream 266 k
Transaction Summary
========================================================================================================================
Install 17 Packages
Total download size: 8.8 M
Installed size: 34 M
如果仔细对比一下,可以发现安装的模块比实际要少
Installed:
libzip-1.6.1-1.module+el8.4.0+415+e936cba3.x86_64
nginx-filesystem-1:1.14.1-9.module+el8.4.0+542+81547229.noarch
oniguruma-6.8.2-2.el8.x86_64
php-7.4.19-1.module+el8.5.0+696+61e7c9ba.x86_64
php-bcmath-7.4.19-1.module+el8.5.0+696+61e7c9ba.x86_64
php-cli-7.4.19-1.module+el8.5.0+696+61e7c9ba.x86_64
php-common-7.4.19-1.module+el8.5.0+696+61e7c9ba.x86_64
php-fpm-7.4.19-1.module+el8.5.0+696+61e7c9ba.x86_64
php-gd-7.4.19-1.module+el8.5.0+696+61e7c9ba.x86_64
php-intl-7.4.19-1.module+el8.5.0+696+61e7c9ba.x86_64
php-json-7.4.19-1.module+el8.5.0+696+61e7c9ba.x86_64
php-mbstring-7.4.19-1.module+el8.5.0+696+61e7c9ba.x86_64
php-mysqlnd-7.4.19-1.module+el8.5.0+696+61e7c9ba.x86_64
php-opcache-7.4.19-1.module+el8.5.0+696+61e7c9ba.x86_64
php-pdo-7.4.19-1.module+el8.5.0+696+61e7c9ba.x86_64
php-pecl-zip-1.18.2-1.module+el8.4.0+415+e936cba3.x86_64
php-xml-7.4.19-1.module+el8.5.0+696+61e7c9ba.x86_64
实际上,这些模块包含在php-common中,可以通过 rpm -ql php-common 查询php-common中都包含了哪些模块
# rpm -ql php-common
/etc/php.d
/etc/php.d/20-bz2.ini
/etc/php.d/20-calendar.ini
/etc/php.d/20-ctype.ini
/etc/php.d/20-curl.ini
/etc/php.d/20-exif.ini
/etc/php.d/20-fileinfo.ini
/etc/php.d/20-ftp.ini
/etc/php.d/20-gettext.ini
/etc/php.d/20-iconv.ini
/etc/php.d/20-phar.ini
/etc/php.d/20-sockets.ini
/etc/php.d/20-tokenizer.ini
/etc/php.ini
/usr/lib64/php
/usr/lib64/php/modules
/usr/lib64/php/modules/bz2.so
/usr/lib64/php/modules/calendar.so
/usr/lib64/php/modules/ctype.so
/usr/lib64/php/modules/curl.so
/usr/lib64/php/modules/exif.so
/usr/lib64/php/modules/fileinfo.so
/usr/lib64/php/modules/ftp.so
/usr/lib64/php/modules/gettext.so
/usr/lib64/php/modules/iconv.so
/usr/lib64/php/modules/phar.so
/usr/lib64/php/modules/sockets.so
/usr/lib64/php/modules/tokenizer.so
查看PHP版本信息
# php -v
PHP 7.4.19 (cli) (built: May 4 2021 11:06:37) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.19, Copyright (c), by Zend Technologies
查看已经安装的PHP模块
# php -m
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
intl
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
pdo
pdo_mysql
pdo_sqlite
Phar
readline
Reflection
session
SimpleXML
sockets
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
启动PHP
PHP安装成功之后,并没有启动,可以通过下面的命令查看PHP的状态
$ sudo systemctl status php-fpm
● php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
Active: inactive (dead)
启动和查看PHP状态
# systemctl enable --now php-fpm
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.
# systemctl status php-fpm
● php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2022-02-20 05:43:57 EST; 46s ago
Main PID: 612431 (php-fpm)
Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 6 (limit: 17864)
Memory: 16.2M
CGroup: /system.slice/php-fpm.service
├─612431 php-fpm: master process (/etc/php-fpm.conf)
├─612432 php-fpm: pool www
├─612433 php-fpm: pool www
├─612434 php-fpm: pool www
├─612435 php-fpm: pool www
└─612436 php-fpm: pool www
Feb 20 05:43:56 racknerd-855048 systemd[1]: Starting The PHP FastCGI Process Manager...
Feb 20 05:43:57 racknerd-855048 systemd[1]: Started The PHP FastCGI Process Manager.
测试Apache和PHP
在上一篇文章中,我们已经成功安装了Apache,并且创建了一个网站 。
现在进入网站根目录
# cd /var/www/domain1.com/public_html/
创建一个PHP文件 phpinfo.php,其内容为:
<?php
phpinfo();
?>
然后在浏览器地址栏中输入
如果显示下面的内容,那么表示PHP已经成功安装,运行正常。
参考
- #php-extensions
本次测试环境在阿贝云免费云服务器()上进行,阿贝云目前正在进行”免费虚拟主机”和“免费云服务器”体验活动,感兴趣的可以试试。