在 CentOS 上配置 PHP 服务,通常指 安装 PHP + 配置 PHP-FPM + 与 Web 服务器(Nginx / Apache)配合使用。下面我按 最常见、最推荐的方式 给你一个完整流程(适用于 CentOS 7 / 8 / Stream)。
cat /etc/centos-release
# CentOS 7
yum install -y epel-release
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
# CentOS 8 / Stream
dnf install -y epel-release
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
yum module list php
# 或
dnf module list php
yum module enable php:remi-8.1 -y
# 或
dnf module enable php:remi-8.1 -y
yum install -y php php-fpm php-cli php-mysqlnd php-json php-gd php-mbstring php-xml php-curl
systemctl start php-fpm
systemctl enable php-fpm
systemctl status php-fpm
| 文件 | 说明 |
|---|---|
/etc/php-fpm.conf |
主配置 |
/etc/php-fpm.d/www.conf |
默认进程池 |
/etc/php.ini |
PHP 全局配置 |
vim /etc/php-fpm.d/www.conf
user = nginx
group = nginx
listen = /run/php-fpm/www.sock
listen.owner = nginx
listen.group = nginx
如果用 Apache,可改为
apache
yum install -y nginx
systemctl enable --now nginx
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
systemctl restart nginx
systemctl restart php-fpm
echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php
浏览器访问:
http://服务器IP/info.php
yum install -y httpd
systemctl enable --now httpd
Apache 配置:
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
vim /etc/php.ini
常见参数:
date.timezone = Asia/Shanghai
upload_max_filesize = 50M
post_max_size = 50M
memory_limit = 256M
max_execution_time = 300
修改后重启:
systemctl restart php-fpm
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
✅ PHP 不解析
fastcgi_pass✅ 502 Bad Gateway
ls -l /run/php-fpm/www.sock
确保 nginx/apache 有访问权限
✅ 端口占用
ss -lntp | grep php
CentOS 配置 PHP 服务 = 安装 PHP-FPM + 配置 Web 服务器 + 调整 php.ini
如果你告诉我:
我可以给你 完全定制化的配置方案。