You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何强制PHP FPM仅读取DOCUMENT_ROOT目录下的.user.ini文件?

强制PHP FPM仅读取DOCUMENT_ROOT目录下的.user.ini文件

核心思路

PHP FPM默认会从脚本所在目录向上扫描至DOCUMENT_ROOT读取所有.user.ini文件,目前没有直接的配置项禁用这一扫描行为,但可以通过以下两种可靠方式实现需求:


方法1:通过PHP FPM配置锁定并按需启用.user.ini

在你的PHP FPM池配置文件(如/etc/php/{version}/fpm/pool.d/www.conf)中添加以下配置:

  1. 全局禁用所有.user.ini文件的读取:
php_admin_value[user_ini.filename] = ""
  1. 针对DOCUMENT_ROOT路径单独启用.user.ini:
[PATH=/]
php_value[user_ini.filename] = ".user.ini"

注意:这种路径匹配规则仅支持PHP 7.4及以上版本的FPM,需确认你的PHP版本符合要求。配置生效后,只有DOCUMENT_ROOT(即/路径对应的目录)下的.user.ini会被读取,子目录的同名文件会被完全忽略。


方法2:通过文件权限限制子目录.user.ini的可读性

利用Linux权限机制,让PHP运行进程(通常为www-data用户)无法读取子目录下的.user.ini:

  • 直接设置子目录.user.ini为完全不可读:
chmod 000 root/other/.user.ini root/other/another/.user.ini
  • 或者修改文件归属为root用户并限制权限:
chown root:root root/other/.user.ini root/other/another/.user.ini
chmod 600 root/other/.user.ini root/other/another/.user.ini

这种方式无需修改PHP配置,即使FPM扫描到这些文件,也因权限不足无法读取内容,达到忽略的效果。


额外安全加固

完成上述配置后,记得给DOCUMENT_ROOT下的.user.ini设置不可变标志,防止被篡改:

chattr +i root/.user.ini

内容的提问来源于stack exchange,提问作者NetVicious

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 19:05:01