必须重启php-fpm服务本身,仅重启nginx无效;先确认phpinfo()显示的loaded configuration file路径,再用sudo systemctl restart php8.4-fpm(版本按实替换)重启,并检查.user.ini、nginx fastcgi_param等覆盖项。

修改 php.ini 后配置不生效,绝大多数情况不是改错了,而是服务根本没重启到位——尤其是 PHP-FPM 进程常驻内存,仅重启 Apache 或 Nginx 不会加载新配置。必须明确重启对应的服务进程,并确认生效路径正确。
第一步:确认你改的是正确的 php.ini 文件
同一台服务器可能有多个 php.ini(CLI、Apache 模块、PHP-FPM 各自独立)。错误地修改了 CLI 版本的配置,对网页请求毫无影响。
- 在网站根目录新建一个 info.php,内容为:
<?php phpinfo(); ?> - 浏览器访问该文件,在页面中搜索 Loaded Configuration File,它显示的路径才是当前 Web 请求实际加载的 php.ini
- 若显示为 No value,说明未加载任何 php.ini,需检查 PHP-FPM 配置中的
php_admin_value[php_ini]或启动参数
第二步:重启对应的服务进程(关键!)
不同部署方式,重启对象完全不同:
-
Apache + mod_php:重启 Apache 即可,如
sudo systemctl restart apache2(Ubuntu/Debian)或sudo systemctl restart httpd(RHEL/CentOS) -
Nginx + PHP-FPM:必须重启 PHP-FPM 服务本身,例如:
sudo systemctl restart php8.4-fpm(版本号请按实际替换);只重启 nginx 无效 - 宝塔面板:进入「软件商店」→ 找到对应 PHP 版本 → 点击「设置」→ 右上角点「重载配置」或「重启」;不要只点 Nginx/Apache 的重启
-
使用 pkill 强制清理残留进程(当 systemctl restart 失败时):
sudo pkill -f "php-fpm",再执行sudo systemctl start php8.4-fpm
第三步:验证配置是否真正生效
不能只看 phpinfo() 页面是否刷新,要查具体参数值:
- 在 info.php 页面中直接搜索你要修改的参数名,比如 memory_limit、date.timezone 或 disable_functions
- 用 PHP 函数验证运行时值:
echo ini_get('upload_max_filesize');,结果应与 php.ini 中设置一致 - 若仍显示旧值,检查是否有更高优先级覆盖:.htaccess(Apache)、Nginx 的 fastcgi_param PHP_VALUE、或 user.ini 文件
第四步:排查常见覆盖源
即使 php.ini 改对、服务也重启了,仍可能被其他配置覆盖:
-
.user.ini(PHP-FPM 模式常用):位于网站根目录,格式为
upload_max_filesize = 100M,会覆盖 php.ini 中同名设置 -
Apache .htaccess:检查是否存在
php_flag display_errors on或php_admin_value disable_functions类指令 -
Nginx 站点配置:在 location ~ \.php$ 块中,若有
fastcgi_param PHP_VALUE "upload_max_filesize=50M",它会合并并覆盖 php.ini - Suhosin 扩展(已淘汰但老环境仍有):其 own php.ini 设置可能独立存在,需一并检查
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











