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.phpecho phpinfo(),然后访问网站查看。

php.ini 文件在哪里?

修改这里的配置文件才会对 web 运用起作用。当然,别忘了重新加载配置或者重启一下。

其他的配置文件

通常来说,配置文件默认都是在 php 的安装目录下。例如我的是在 /etc/php/7.3 目录下。

php.ini 文件在哪里?

可以看到有不同的文件夹,对应了不同的运行模式,配置文件就装在里面。

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3

以前就是经常这类问题想砸电脑

4年前 评论

使用 php --ini 查看得到的配置文件,实际上仅适用于 cli 模式,即命令行模式

我对这段有困惑。

首先我的知识结构是这样展开的,在鸟哥的文章中让PHP7达到最高性能的几个Tips有这么一段,

file

说明了opcache在php.ini里面配置,然后我记得之前看过的一个问答Configure OPCache on PHP-FPM
里面提问如何给fpm配置opcache。这里可以看出php.ini 仅适用于 cli 模式是不严谨的。

最后在php.ini的官方注释里面

file

和手册的说明

配置文件(php.ini)在 PHP 启动时被读取。对于服务器模块版本的 PHP,仅在 web 服务器启动时读取一次。对于 CGI 和 CLI 版本,每次调用都会读取

最后我的结论是,php.ini的配置fpm要用,命令行也要用。

4年前 评论
ㅤㅤ (楼主) 4年前

想必楼主是多版本 PHP 环境,执行PHP命令前应该先确定一下PHP命令版本。
假设你PHP命令默认用的7.2,而Nginx配置的转发使用的7.3。那 cli 和 web 对应的 php.ini 自然不同。并不是 php --ini 仅试用 cli。

4年前 评论
ㅤㅤ (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!