PHP 7.4 可以设置好 remi repo 库之后直接用 yum 安装, 没有特殊需求不需要使用编译安装
安装必要程序包
首先, 安装 epel-release
和 yum-utils
, 然后安装 Remi 仓库
yum install epel-release yum-utils
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
CentOS 8
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
启用 Remi 仓库
启用 remi-php74
仓库并更新系统
yum-config-manager --enable remi-php74
yum update
CentOS 8
Error:
Problem: cannot install the best candidate for the job
- nothing provides libedit-devel(x86-64) needed by php72-php-devel-7.2.33-1.el8.remi.x86_64
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
对于 CentOS 8, 可能会遇到问题, 解决方法是启用 PowerTools
仓库
dnf config-manager --set-enabled PowerTools
You need to enable the PowerTools repository (equiv. of upstream CodeReady Linux Builder channel) which provide most of the developer stuff.
你需要启用 PowerTools 存储库 (相当于上游 CodeReady Linux Builder 频道), 它提供大多数开发人员的内容
搜索可安装的 PHP 7.4 扩展
你可以使用以下命令来查看可用的 PHP 7.4 扩展
yum search php74 | more
yum search php74 | egrep 'fpm|gd|mysql|memcache'
php74-php-fpm.x86_64 : PHP FastCGI Process Manager
php74-php-gd.x86_64 : A module for PHP applications for using the gd graphics
php74-php-mysqlnd.x86_64 : A module for PHP applications that use MySQL
php74-php-pecl-mysql.x86_64 : MySQL database access functions
php74-php-pecl-mysql-xdevapi.x86_64 : MySQL database access functions
安装 PHP 7.4 和相关扩展
根据需要安装 PHP 7.4 和相关扩展
yum install php74 php74-php-devel php74-php-fpm php74-php-gd php74-php-json php74-php-mbstring php74-php-mysqlnd php74-php-xml php74-php-xmlrpc php74-php-opcache php74-php-mcrypt
检查 PHP 版本和模块
你可以通过以下命令检查安装的 PHP 版本及其模块
php74 --version
php74 --modules
配置 Nginx 以支持 PHP
- 检查
php-fpm
服务的启动参数 - 检查 nginx 的用户组
- 创建
php-fpm.sock
目录
# 检查服务启动参数
cat /usr/lib/systemd/system/php74-php-fpm.service
cat /etc/systemd/system/multi-user.target.wants/php74-php-fpm.service
# 检查 nginx 用户组
egrep '^(user|group)' /etc/nginx/nginx.conf
# 创建 sock 目录 (临时)
mkdir -p /var/run/php-fpm/
# 创建 sock 目录 (永久)
vim /usr/lib/systemd/system/php74-php-fpm.service
ExecStartPre=/bin/mkdir -p /var/run/php-fpm/
## 创建 sock 目录 (永久), 当 php74-php-fpm 更新后仍然生效
systemctl edit php74-php-fpm
[Service]
ExecStartPre=/bin/mkdir -p /var/run/php-fpm/
修改 php-fpm
配置
编辑 vim /etc/opt/remi/php74/php-fpm.d/www.conf
文件
user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
修改 Session 文件夹所有权
将 PHP 的 session 文件夹的所有权更改为 nginx
用户和组
chown -R nginx:nginx /var/opt/remi/php74/lib/php
修改 Nginx 配置文件
编辑 /etc/nginx/nginx.conf
文件
server {
.... # 其他配置参数
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
}
启动 PHP-FPM 和 Nginx 服务
启用并重启 php-fpm
和 nginx
服务
systemctl enable php74-php-fpm
systemctl restart php74-php-fpm
systemctl restart nginx
测试 PHP 配置
在你的 Web 根目录下创建一个 phpinfo.php
文件以测试 PHP 是否正常工作
<?php
// test script for CentOS/RHEL 7+PHP 7.4+Nginx
phpinfo();
?>
配置 Xdebug 进行远程调试
服务器主动与客户端通信, 远程调试客户端需要开放设置的端口
-
把 phpinfo 页面完整复制到 Xdebug Wizard 生成安装步骤
-
当
phpize
,php-config
找不到时可以使用搜索命令# find / -name "phpize" /opt/remi/php74/root/usr/bin/phpize # find / -name "php-config" ./configure --with-php-config=/opt/remi/php74/root/usr/bin/php-config
-
编辑
/etc/opt/remi/php74/php.ini
文件, 添加 Xdebug 配置zend_extension = /opt/remi/php74/root/usr/lib64/php/modules/xdebug.so [xdebug] xdebug.auto_trace = true xdebug.remote_enable = true xdebug.remote_autostart = true xdebug.remote_connect_back = true xdebug.remote_port = 4000 xdebug.collect_vars = On xdebug.collect_return = On xdebug.collect_params = On xdebug.show_local_vars = On xdebug.default_enable = On xdebug.max_nesting_level = 10000
配置 VSCode 进行调试
在 VSCode 中创建如下调试配置
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 4000,
"pathMappings": {
"/usr/share/nginx/html": "${workspaceRoot}",
},
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9000
}
]
}
安装 Chrome 插件
安装 Xdebug Helper 插件以便于调试
一键安装
在 server_init 中 安装 PHP 8.2.sh
yum install -y epel-release yum-utils
yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install -y php82 php82-php-devel php82-php-fpm php82-php-gd php82-php-json php82-php-mbstring php82-php-mysqlnd php82-php-xml php82-php-xmlrpc php82-php-opcache php82-php-mcrypt php82-php-sodium php82-php-pgsql GraphicsMagick
sed -i '11a\ExecStartPre=/bin/mkdir -p /var/run/php-fpm/' /usr/lib/systemd/system/php82-php-fpm.service
export PHP_WWW="/etc/opt/remi/php82/php-fpm.d/www.conf"
sed -i 's/user =.*/user = nginx/g' $PHP_WWW
sed -i 's/group =.*/group = nginx/g' $PHP_WWW
sed -i 's/listen =.*/listen = \/var\/run\/php-fpm\/php-fpm.sock/g' $PHP_WWW
sed -i 's/;listen.owner =.*/listen.owner = nginx/g' $PHP_WWW
sed -i 's/;listen.group =.*/listen.group = nginx/g' $PHP_WWW
export PHP_INI="/etc/opt/remi/php82/php.ini"
sed -i -e "s|expose_php = On|expose_php = Off|" $PHP_INI
sed -i -e "s|short_open_tag = Off|short_open_tag = On|" $PHP_INI
chown -R nginx:nginx /var/opt/remi/php82/lib/php
systemctl enable php82-php-fpm
systemctl restart php82-php-fpm
原文
unable to install php-devel on CentOS 8
How to install PHP 7.2 on CentOS 7/RHEL 7
Cento7にphp-fpmをインストールし、nginxと連携する