Debian 中 PHP 配置文件位置

在 Debian 上捣鼓 PHP,第一个要面对的问题就是:配置文件到底在哪?别急着去 /etc 底下乱翻,Debian 的打包哲学是“各司其职,分而治之”——不同运行模式(SAPI)的配置是分开存放的,版本号也要带进去。搞清楚了这套逻辑,后面的事情就顺了。
一、核心路径
主配置文件依然是熟悉的 php.ini,但路径不再是单一的 /etc/php.ini,而是按照 /etc/php/{版本号}/{SAPI}/php.ini 这个模板来组织的。常见的 SAPI 类型和对应的典型路径如下表所示(版本号请替换为实际安装的版本,比如 8.2、8.3):
| SAPI | 典型路径 | 用途 |
|---|---|---|
| CLI | /etc/php/{版本号}/cli/php.ini | 命令行运行 PHP |
| FPM | /etc/php/{版本号}/fpm/php.ini | Nginx/Apache 通过 PHP-FPM 运行 |
| Apache 模块 | /etc/php/{版本号}/apache2/php.ini | 使用 mod_php 的 Apache |
这个布局意味着,如果你想调整 Web 请求相关的参数,一定要确认自己正在编辑的是 FPM 或 Apache 对应的目录,而不是 CLI 那个——否则改了等于白改。
二、如何快速确认实际加载的 php.ini
光知道路径还不够,有时候你可能装了好几个 PHP 版本,或者不确定当前跑的那个进程到底读的是哪个配置文件。这时候有几个快速确认的方法:
- 命令行快速定位
- 看 CLI 的配置:运行
php --ini,注意看输出中的Loaded Configuration File那一行。 - 看 FPM 的配置:运行
php-fpm --ini(如果命令不存在,换成php{版本号}-fpm --ini)。
- 看 CLI 的配置:运行
- 在 PHP 脚本中查看
- 创建一个
info.php文件,内容就一句,然后在浏览器里访问它,页面中搜索Loaded Configuration File。 - 或者直接在终端里跑
php -i | grep 'Loaded Configuration File',效果一样。
- 创建一个
需要提醒的是:当系统存在多个 PHP 版本时,CLI 和 FPM 可能各自加载不同目录下的 php.ini。修改完以后,记得重启对应的服务,否则新配置不会生效。
三、与 PHP-FPM 相关的其他配置路径
除了 php.ini,PHP-FPM 还有一些自己的配置文件,也值得留意:
- PHP-FPM 主配置:
/etc/php/{版本号}/fpm/php-fpm.conf - 进程池配置:
/etc/php/{版本号}/fpm/pool.d/www.conf——这里面可以调整listen、user、group、进程管理参数等。
改动 FPM 相关配置后,别忘了执行 sudo systemctl restart php{版本号}-fpm 来重启服务。
四、修改后如何生效
不同 SAPI 的配置生效方式不太一样,这里列个清晰的小指南:
- CLI:修改
cli/php.ini后,新开一个终端会话就能生效,无需重启任何服务。 - FPM:修改
fpm/php.ini或pool.d/www.conf后,执行sudo systemctl restart php{版本号}-fpm。 - Apache 模块:修改
apache2/php.ini后,执行sudo systemctl restart apache2。
验证是否生效很简单:在 Web 环境中写个 或者再次查看 phpinfo() 中的 Loaded Configuration File 和对应的指令值,一目了然。