php --ini 输出的 Loaded Configuration File 才是真实生效路径,CLI 与 Web 环境各自加载不同 php.ini;Windows 下应通过 php --ini 和 phpinfo() 确认路径,设 PHPRC 环境变量指定配置目录,修改后 Web 须重启服务、CLI 需重执行命令验证。

php --ini 输出的 Loaded Configuration File 才是真实生效路径
Windows 下改错 php.ini 文件是常见失败原因。PHP CLI 和 Web 环境(Apache/Nginx/IIS)可能加载完全不同的配置文件,哪怕你只改了一个地方,也可能毫无效果。
运行 php --ini 查看 CLI 模式下实际加载的 php.ini;Web 环境必须用 phpinfo()(新建 info.php 写入 并访问)确认 Loaded Configuration File 行的路径。
- 如果
Loaded Configuration File显示为C:Windowsphp.ini,说明 PHP 正在读系统目录下的文件,不是你解压目录里的那个 - 如果显示为空或
(none),代表当前环境根本没加载任何php.ini,所有配置走默认值 - Windows 下
php.ini常见位置包括:C:phpphp.ini、C:Windowsphp.ini、C: mppphpphp.ini、C:laragoninphpphp-8.2.0php.ini等——但最终以php --ini或phpinfo()输出为准
想让 PHP 加载自定义路径的 php.ini,设 PHPRC 环境变量
不建议把 php.ini 放进 C:Windows,也不推荐靠复制覆盖来“强制生效”。Windows 下最可控的方式是设置 PHPRC 环境变量。
步骤很简单:打开“系统属性 → 高级 → 环境变量”,在“系统变量”里新建一个变量:
-
变量名:PHPRC -
变量值:你存放php.ini的完整目录路径,例如C:myphpconfig(注意:不是文件路径,是目录!结尾不要带php.ini)
设置完重启命令行和 Web 服务。再次运行 php --ini,你会发现 Loaded Configuration File 已指向你指定的目录下的 php.ini。这个方法对 CLI 和 Apache/Nginx(通过 php-cgi 或 mod_php)都有效,IIS 也支持。
extension_dir 路径写法必须匹配 Windows 分隔符习惯
启用扩展时报 unable to load dynamic library,90% 是因为 extension_dir 指向错误或 DLL 文件不存在。Windows 下这个路径非常敏感:
- 路径中允许用
或/,但不能混用;旧版 PHP(如 7.4 及更早)对单斜杠/支持不稳定,建议统一用双反斜杠\或正斜杠/ - 典型正确写法:
extension_dir = "C:/php/ext"或extension_dir = "C:\php\ext" - 确保该目录下确实存在对应 DLL 文件,比如启用了
extension=openssl,就要确认C:/php/ext/php_openssl.dll存在 - CLI 和 Web 模块可能使用不同扩展目录(尤其当 Apache 和 CLI 用不同 PHP 版本时),务必分别验证
改完 php.ini 后,Web 环境必须重启服务,CLI 不需要但需重执行命令
很多人改完 php.ini 就直接刷新网页,结果发现没生效——因为 Apache/Nginx/PHP-FPM 进程在启动时已将配置加载进内存,不重启就不会重新读取。
- Apache:运行
httpd -k restart或通过服务管理器重启Apache2.4服务 - Nginx + PHP-FPM:先
sudo systemctl restart php*-fpm(Linux 类似,Windows 下用任务管理器结束php-fpm.exe进程再重启) - IIS:运行
iisreset或在 IIS 管理器中“重新启动”站点 - CLI 模式无需重启进程,但之前运行的
php -r或脚本不会自动感知新配置,必须新开终端或重跑命令
验证是否生效,别只看编辑器里改了什么,直接跑 php -r "echo ini_get('upload_max_filesize');" 或刷新 info.php 页面——这才是唯一可信的结果。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











