php.ini 文件在哪里?
最近遇到一个问题,需要更改 php 的配置文件,在命令行中使用 php --ini 查看配置文件的位置,更改之后,重启 php ,发现并没有作用。经过学习,发现事情没有想象中的那么简单。
运行模式
php 有很多种不同的运行模式,其中常见的有以下几种。
- CLI 模式
- CGI 模式
- FastCGI 模式(FPM 模式)
- Module 模式
关于运行模式的详细解释,可参考文章。
PHP-FPM(PHP-FastCGI Process Manager)是 php 语言中实现了 FastCGI 协议的进程管理器,由 Andrei Nigmatulin 编写实现,已被 PHP 官方收录并集成到内核中。
找到配置文件
上面说到,php 可以在不同的模式下运行,所以不同的模式下,php 所加载的配置文件是不同的。例如开头说到的,在命令行中使用 php --ini 查看,可以看到一个配置文件,这个文件对应的是 cli 模式,即命令行模式。
如果运用程序是 web ,此时 php 处于 FastCGI(FPM) 运行模式下,所以我们需要确认对应的配置文件。其中一个方法是,在 index.php 中 echo phpinfo(),然后访问网站查看。

修改这里的配置文件才会对 web 运用起作用。当然,别忘了重新加载配置或者重启一下。
其他的配置文件
通常来说,配置文件默认都是在 php 的安装目录下。例如我的是在 /etc/php/7.3 目录下。

可以看到有不同的文件夹,对应了不同的运行模式,配置文件就装在里面。
本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu
以前就是经常这类问题想砸电脑
使用 php --ini 查看得到的配置文件,实际上仅适用于 cli 模式,即命令行模式我对这段有困惑。
首先我的知识结构是这样展开的,在鸟哥的文章中让PHP7达到最高性能的几个Tips有这么一段,
说明了opcache在php.ini里面配置,然后我记得之前看过的一个问答Configure OPCache on PHP-FPM ,
里面提问如何给fpm配置opcache。这里可以看出php.ini
仅适用于 cli 模式是不严谨的。最后在php.ini的官方注释里面
和手册的说明
配置文件(php.ini)在 PHP 启动时被读取。对于服务器模块版本的 PHP,仅在 web 服务器启动时读取一次。对于 CGI 和 CLI 版本,每次调用都会读取最后我的结论是,php.ini的配置fpm要用,命令行也要用。
想必楼主是多版本 PHP 环境,执行PHP命令前应该先确定一下PHP命令版本。
假设你PHP命令默认用的7.2,而Nginx配置的转发使用的7.3。那 cli 和 web 对应的 php.ini 自然不同。并不是
php --ini仅试用 cli。