根本原因是PHP CLI、Apache模块、Nginx+PHP-FPM三者加载完全独立的配置文件;网站运行于PHP-FPM模式时,实际读取的是php-fpm.ini或www.conf中指定的php.ini路径,而非CLI所用的php.ini,需通过phpinfo()确认“Loaded Configuration File”路径并重启PHP-FPM生效。

小皮面板改了php.ini但网站读的是另一个文件,根本原因在于:PHP CLI、Apache 模块、Nginx + PHP-FPM 这三者加载的是**完全独立的配置文件**,互不影响。你改的可能是命令行用的 php.ini(比如 D:\phpstudy_pro\Extensions\php\php8.1nts\php.ini),而网站实际运行走的是 PHP-FPM 模式,它读的是另一份——通常在 D:\phpstudy_pro\Extensions\php\php8.1nts\php-fpm.ini 或更常见的是 FPM 自动加载的同目录下另一份 ini(部分版本会额外读取 php-fpm.d/www.conf 中指定的 php_admin_value[php_ini])。
确认网站当前实际加载的 php.ini 路径
在你的网站根目录下新建一个 info.php 文件,内容只写:
用浏览器访问 http://你的域名/info.php,在页面顶部找 “Loaded Configuration File” 这一行,后面显示的路径就是网站真正读取的 php.ini 文件位置——这个路径才是你必须修改并重启服务才生效的那个。
立即学习“PHP免费学习笔记(深入)”;
小皮面板中常见的多份 php.ini 分布
-
CLI 模式(命令行执行 php a.php):路径如
D:\phpstudy_pro\Extensions\php\php8.1nts\php.ini -
Apache 模式(启用 Apache 时):一般和 CLI 共用同一份 php.ini,但 Apache 的
httpd.conf或php.conf可能通过php_admin_value覆盖个别配置 -
Nginx + PHP-FPM 模式(小皮默认推荐):FPM 进程有自己的加载逻辑,优先级顺序为:
①php-fpm.conf中php_admin_value[xxx]或php_value[xxx]配置
②www.conf中同上类配置
③ 最后才读取 php.ini(但路径可能不是你直觉认为的那个)
改完后必须重启对应服务
仅保存 php.ini 文件不生效,必须让 PHP-FPM 进程重新加载配置:
- 在小皮面板中,点击右上角「重启」按钮 → 选择「重启 PHP」或「重启 Nginx + PHP-FPM」
- 不要只点「重启 Nginx」——那只会重载 Nginx 配置,PHP-FPM 进程仍在用旧内存里的配置
- 重启后务必再访问一次
info.php,核对 “Loaded Configuration File” 是否仍是原路径,且你修改的项(如display_errors、extension=mbstring)在 “Local Value” 列已更新
检查 extension_dir 和扩展是否真加载成功
PHP 8.1+ 默认 extension_dir = "ext" 是相对路径,在 FPM 下极易失效。请打开你网站实际加载的 php.ini,把这一行改成绝对路径:
extension_dir = "D:/phpstudy_pro/Extensions/php/php8.1nts/ext"
然后确保你要启用的扩展(如 extension=openssl、extension=mysqli)前面没有分号,并且对应 .dll 文件确实存在于该 ext 目录下。最后再次重启 PHP-FPM。



















