温馨提示×

centos php配置不生效为何

小樊
44
2026-09-08 20:11:43
栏目: 编程语言

在 CentOS 上 PHP 配置不生效 是很常见的问题,通常不是配置写错了,而是配置位置或加载顺序不对。下面按最常见原因逐一说明,你可以对照排查。


一、改错 php.ini 文件(最常见)

CentOS 上 PHP 可能有多个 php.ini,你改的未必是被加载的那个。

查看真正生效的 php.ini

php --ini

或(Web 环境)

<?php
phpinfo();

Loaded Configuration File

✅ 正确做法:修改 Loaded Configuration File 指向的文件


二、CLI 和 FPM 用的是不同配置

  • php 命令 → CLI 模式
  • 网站访问 → php-fpm

两者可能:

  • 不同的 php.ini
  • 不同的 conf.d 目录

例如:

/etc/php.ini                 # CLI
/etc/php-fpm.d/www.conf      # FPM
/etc/php.d/*.ini             # 扩展配置

✅ 改完记得确认你改的是 Web 用的那个


三、修改后没有重启 PHP

改 php.ini 必须重启 PHP 服务

PHP-FPM

systemctl restart php-fpm

(或)

systemctl restart php74-php-fpm

Apache + mod_php

systemctl restart httpd

Nginx

systemctl restart nginx

⚠️ 只 reload nginx 不会 重新加载 PHP 配置


四、配置被后面的文件覆盖

CentOS 常用:

/etc/php.d/*.ini

这些文件 按字母顺序加载,可能覆盖 php.ini

例如:

; /etc/php.d/10-opcache.ini
memory_limit=128M

✅ 检查是否有重复配置:

grep -R "memory_limit" /etc/php.ini /etc/php.d/

五、写在错误的作用域

某些配置只能在特定地方生效

配置 位置
upload_max_filesize php.ini / .user.ini
post_max_size php.ini
disable_functions php.ini
open_basedir php.ini / FPM pool

.htaccess 对 PHP-FPM 无效
php_value 对 FPM 无效


六、使用了 .user.ini(目录级配置)

如果网站目录有:

.user.ini

它会覆盖 php.ini(仅对该目录)

查看:

ls -a /var/www/html
cat /var/www/html/.user.ini

七、SELinux 导致“看起来没生效”

有时配置生效了,但被 SELinux 拦截

排查:

getenforce

临时关闭测试:

setenforce 0

八、PHP 版本搞混(非常常见)

CentOS 可能同时装了:

  • php 5.4(系统自带)
  • php 7.4 / 8.x(remi / scl)
which php
php -v
rpm -qa | grep php

✅ 确保你改的是正在运行的版本


快速自查清单 ✅

  • [ ] php --ini 看的是哪个文件
  • [ ] 改的是 CLI 还是 FPM
  • [ ] 是否 restart php-fpm
  • [ ] 是否被 php.d 覆盖
  • [ ] 是否有 .user.ini
  • [ ] PHP 版本是否正确

如果你愿意,可以把 具体改了什么配置 + 用的 Web 服务(Apache/Nginx)+ PHP 版本 发出来,我可以直接帮你定位是哪一条原因。

0