在 Nginx 网站根目录中,.user.ini 文件通常与 PHP 运行环境相关,特别是当网站使用 PHP-FPM 或 FastCGI 方式解析 PHP 时。它的主要作用是 覆盖 PHP 的某些配置参数,类似于 .htaccess(但 .htaccess 是 Apache 特有的,而 .user.ini 适用于 Nginx + PHP 环境)。
1. 作用
覆盖 PHP 配置
它允许网站管理员在不修改全局 php.ini 的情况下,针对特定网站目录调整 PHP 运行参数。
upload_max_filesize = 100M
post_max_size = 100M
memory_limit = 256M
替代 .htaccess 的部分功能
在 Nginx 环境下,.htaccess 无效,但 .user.ini 可以部分替代其功能(如 PHP 配置调整)。
影响范围
.user.ini会影响 当前目录及其子目录 的 PHP 运行环境。- 如果放在网站根目录(如
/var/www/html/.user.ini),则会影响整个网站。
2. 常见配置示例
; 允许上传大文件
upload_max_filesize = 100M
post_max_size = 100M
; 调整内存限制
memory_limit = 256M
; 调整 PHP 超时时间
max_execution_time = 300
; 禁用危险函数(安全加固)
disable_functions = exec,passthru,shell_exec,system
; 调整错误报告级别
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
3. 生效条件
PHP 必须支持 user_ini
检查 php.ini 中的 user_ini.cache_ttl 和 user_ini.filename:
user_ini.filename = ".user.ini" ; 默认就是 .user.ini
user_ini.cache_ttl = 300 ; 缓存时间(秒)
Nginx 配置必须允许 PHP 解析
确保 Nginx 的 server 配置块包含类似以下内容:
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
文件权限正确
.user.ini 必须可读(通常 644 权限):
chmod 644 .user.ini
4. 与 .htaccess 的区别
| 特性 | .user.ini | .htaccess |
|---|---|---|
| 适用环境 | Nginx + PHP | Apache |
| 主要用途 | 调整 PHP 配置 | 调整 Apache 行为(如 URL 重写、访问控制) |
| 性能影响 | 较小(PHP 解析时读取) | 较大(Apache 每次请求都会检查) |
| 安全风险 | 较低(仅影响 PHP) | 较高(可修改服务器行为) |
5. 注意事项
- **不要滥用
.user.ini**- 如果网站不需要自定义 PHP 配置,建议删除
.user.ini,避免潜在安全问题。
- 如果网站不需要自定义 PHP 配置,建议删除
- 避免敏感信息泄露
- 确保
.user.ini不能被直接访问(Nginx 默认会隐藏.ini文件)。
- 确保
- 修改后可能需要重启 PHP-FPM
- 如果修改后未生效,可以尝试 :
systemctl restart php-fpm
- 如果修改后未生效,可以尝试 :
6. 总结
.user.ini主要用于 Nginx + PHP 环境 下的 PHP 参数调整。- 它是
.htaccess的部分替代方案,但功能仅限于 PHP 配置。 - 使用时需确保 PHP 支持
user_ini,并注意文件权限和安全性。
如果你的网站不需要自定义 PHP 配置,可以删除 .user.ini 以减少潜在风险。