以 Loaded Configuration File 行显示的路径为准——它才是 PHP 实际加载并解析的配置文件;Configuration File (php.ini) Path 仅为搜索目录,若该目录下无 php.ini 则显示 (none),PHP 将使用内置默认值。

php --ini 和 phpinfo() 显示的路径不一致,以哪个为准?
以 Loaded Configuration File 行显示的路径为准——它才是 PHP 实际加载并解析的配置文件。很多人误把 Configuration File (php.ini) Path 当成真实路径,其实那只是“搜索目录”,PHP 会在这个目录下找 php.ini,但找不到就跳过,最终显示 (none)。
CLI 和 Web SAPI(如 Apache/FPM)很可能加载不同的 php.ini:运行 php --ini 查 CLI 的,开一个 页面查 Web 的,两者结果常不同。
执行 php --ini 显示 Loaded Configuration File: (none),说明什么?
PHP 没有加载任何 php.ini 文件,全部使用内置默认值。这不是报错,但意味着你改的所有配置(比如 display_errors、extension_dir)都不会生效。
- 常见原因:编译安装时没复制模板文件,或复制后没重命名为
php.ini - 源码包里只有
php.ini-development和php.ini-production,必须手动复制+重命名 - 某些 Docker 镜像或精简版包管理器(如 Alpine apk)默认不附带
php.ini,需挂载或用-d参数覆盖
找不到 php.ini,怎么快速定位并生成它?
别猜路径,先让 PHP 自己说位置:php --ini 输出里的 Scan for additional .ini files in 路径,就是它愿意去翻的地方;Configuration File (php.ini) Path 行末尾的目录,就是你应该放 php.ini 的地方。
如果该目录下真没有,按以下顺序操作:
- 去你的 PHP 源码解压目录(比如
/usr/src/php-8.2.12/)找php.ini-production - 复制过去:
cp php.ini-production /usr/local/php/lib/php.ini(路径按php --ini输出的实际Configuration File (php.ini) Path替换) - 检查权限:
ls -l /usr/local/php/lib/php.ini,确保是644且 PHP 进程用户可读 - 改完别忘了重启对应服务:
systemctl restart php-fpm或apachectl graceful,不是只重启 Web 服务器
为什么改了 php.ini 但 phpinfo() 里值没变?
最可能的原因是:你改的是 CLI 的 php.ini,而 phpinfo() 看的是 FPM 或 Apache 模块加载的另一个文件。尤其在 Ubuntu/Debian 上,/etc/php/8.2/cli/php.ini 和 /etc/php/8.2/fpm/php.ini 是两个独立文件。
另一个隐蔽问题是 ini 目录机制:主 php.ini 末尾有 include_path = "/etc/php/8.2/conf.d",实际配置分散在 .ini 文件里——你改主文件根本没用,得去 conf.d/ 下加或改对应扩展的 .ini。
还有就是语法错误:哪怕多了一个空格或漏了分号,整份 php.ini 就被静默跳过,PHP 回退到默认值。用 php -t 检查语法,或看错误日志里有没有 Invalid configuration directive 提示。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











