必须重启php运行环境而非web服务器本身:apache需重启以重载mod_php,nginx需重启php-fpm进程(非nginx自身),cli模式无需重启但须确认php版本一致;常见错误是仅重启nginx而忽略php-fpm,导致配置不生效。

改完 php.ini 必须重启 PHP 运行环境,不是 Web 服务器本身
php.ini 是 PHP 引擎自己读的配置文件,Apache 或 Nginx 只负责把请求转给 PHP,不解析 ini。所以重启 Apache 或只 reload Nginx 配置,完全不会让 php.ini 生效。
真正需要重启的是 PHP 的运行载体:
- Apache + mod_php:重启
Apache即可(因为 PHP 模块随 Apache 启动时加载 ini) - Nginx + PHP-FPM:必须重启
PHP-FPM进程(Nginx本身不用重启,但 reload 也无害) - CLI 模式(如命令行运行 php script.php):不需要重启任何服务,但要确保你用的是同一版本 PHP —— 可用
php -i | grep 'Loaded Configuration File'核对
为什么只重启 Nginx 不生效?
Nginx 和 PHP-FPM 是两个独立进程:Nginx 处理 HTTP 请求、转发 CGI/FastCGI,而 PHP-FPM 才是真正加载并执行 php.ini 的那个。修改 php.ini 后,只有 PHP-FPM 主进程重新读取配置才能生效。
常见错误操作:
- 在 PhpStudy 面板里点了「重启 Nginx」但没点「重启 PHP-FPM」→ 配置白改
- 用
nginx -s reload→ 这只是重载 nginx.conf,和 php.ini 无关 - Linux 下杀掉 php-fpm 进程但没用
systemctl start php-fpm或/usr/local/php/sbin/php-fpm重新拉起 → 实际上 PHP 服务已中断
如何确认你重启的是正确的 PHP-FPM 实例?
一台机器可能装了多个 PHP 版本,每个版本对应一个 PHP-FPM 配置和进程。不能默认“重启 php-fpm 就行”,得对齐版本:
- 查当前站点用的 PHP 版本:PhpStudy 面板「网站」列表里看「PHP 版本」列
- 查该版本的 FPM 主进程路径:通常在
phpstudy_pro/Extensions/php/php_x.x.xnts/php-fpm.exe(Windows)或/usr/local/php/x.x/sbin/php-fpm(macOS/Linux) - 查正在运行的主进程配置:用
ps aux | grep php-fpm看启动命令带的-c参数指向哪个php-fpm.conf,再从那里反推它加载的是哪个 php.ini
最稳妥的方式:在站点根目录放 info.php(内容为 <?php phpinfo(); ?>),访问后搜索 Loaded Configuration File,记下路径,再确认你重启的服务确实会读这个路径下的配置。
重启后仍不生效?优先检查这三处
配置写对了、服务也重启了,但 phpinfo() 显示的值还是旧的——大概率是以下原因:
-
.user.ini文件覆盖了 php.ini:它在当前目录或父目录存在时会自动生效,优先级高于 php.ini(尤其在 CGI/FastCGI 模式下),检查并删掉或同步修改它 - PHP OPcache 缓存了旧配置:加一句
opcache_reset();到脚本里临时触发重载,或直接在 php.ini 中设opcache.enable=0后重启 - Web 服务器层做了覆盖:比如 Nginx 的 fastcgi_param PHP_VALUE 设置了
upload_max_filesize,这种参数会直接覆盖 php.ini,需检查 server 或 location 块里的fastcgi_param
最常被忽略的一点:改完 php.ini 后,别只信编辑器保存了,用 md5sum /path/to/php.ini 或文件属性时间戳确认磁盘上确实是新内容——有些编辑器(尤其带备份功能的)会静默写到副本里。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











