改完php.ini不生效主因是修改了错误文件或未重启对应服务,需用php --ini或phpinfo()确认真实路径,并依运行模式重启Apache、PHP-FPM等服务。

改完 php.ini 不生效,绝大多数情况不是配置写错了,而是改了错误的文件,或者没重启对应的服务进程。
确认你编辑的是 PHP 解释器实际加载的 php.ini
PHP 可能有多个 php.ini 文件(CLI、Apache 模块、FPM 各用一个),运行 php --ini(命令行)或 phpinfo()(Web 环境)才能看到真实路径。
- 命令行下执行:
php --ini
→ 查看Loaded Configuration File行 - Web 下新建
info.php,内容为 ,浏览器打开后搜索Loaded Configuration File - 常见误改路径:
/etc/php/8.1/cli/php.ini(只影响php命令),但 Web 用的是/etc/php/8.1/fpm/php.ini或/etc/php/8.1/apache2/php.ini
改完必须重启对应 PHP 进程
PHP 不会热重载 php.ini,修改后必须重启承载它的服务:
- Apache + mod_php:重启
apache2或httpd服务 - PHP-FPM:重启
php8.1-fpm(版本号按实际替换)服务,不是只 reload - CLI 场景:无需重启,但新终端或新脚本才会读新配置(旧进程已加载旧 ini)
- 注意:
service php-fpm reload有时不生效,建议用restart
检查配置是否被覆盖或语法错误
PHP 启动时若遇到 php.ini 语法错误(如漏掉分号、引号不匹配),会静默忽略整行甚至整个段落,且不报错。
立即学习“PHP免费学习笔记(深入)”;
- 用
php -t检查 Apache 配置(仅限 mod_php);用php-fpm -t检查 FPM 配置 - 修改后执行
php -m看扩展是否加载成功,或php -i | grep 'upload_max_filesize'直接查某项值 - 某些配置项(如
memory_limit)可能被.htaccess、ini_set()或 Docker 的-d参数覆盖,优先级高于php.ini
最容易被忽略的是:你以为在改 FPM 的配置,其实 phpinfo() 显示的是 CLI 的路径;或者改了 php.ini 却忘了 systemctl restart php8.1-fpm —— 重启错服务比写错配置更常见。











