修改 php.ini 后 phpinfo() 未更新,最常见原因是改错文件或 PHP 未加载该文件;需确认 Loaded Configuration File 路径、权限,并按 SAPI 类型重启对应服务(如 php-fpm 或 apache2)。
修改 php.ini 后为什么 phpinfo() 没变?
改完 php.ini 文件却没生效,最常见原因是:你改错了文件,或 PHP 没加载到它。PHP 实际读取的配置文件路径必须和 phpinfo() 页面中显示的 Loaded Configuration File 一行完全一致。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 运行
php -i | grep "Loaded Configuration File"(命令行)或新建info.php写访问网页,确认真实路径 - 用
ls -l检查该文件权限,确保 Web 进程用户(如www-data或nginx)有读取权限 - 别改错位置:常见混淆点是
/etc/php/8.1/cli/php.ini(命令行用)和/etc/php/8.1/fpm/php.ini(FPM 用),Web 服务通常走 FPM 或 Apache 模块,不是 CLI
FPM 场景下改完 php.ini 必须重启什么?
PHP-FPM 不会自动重载 php.ini —— 它只响应信号重载自己的进程配置(www.conf),但不重新解析 php.ini。改 php.ini 后必须彻底重启 FPM 主进程,否则旧配置一直缓存在内存里。
实操建议:
立即学习“PHP免费学习笔记(深入)”;
- 执行
sudo systemctl restart php8.1-fpm(Ubuntu/Debian,版本号按实际调整) - 验证是否成功:重启后立刻访问
phpinfo()页面,刷新并搜索关键词(如upload_max_filesize),确认值已更新 - 别用
reload:它只重载 pool 配置,对php.ini无效;restart才会触发完整初始化
Apache + mod_php 方式下改配置要重启哪个服务?
mod_php 是 Apache 的模块,PHP 配置随 Apache 进程启动时一次性加载。改完 php.ini 后,必须重启整个 Apache,不能只 reload 配置。