LNMP 会默认为每个网站目录生成一个 .user.ini 文件,如果我们想修改网站目录的权限组或者删除网站数据时,可能就会返回 ‘.user.ini’: Operation not permitted 权限不足无法操作或删除 .user.ini 的问题。下面老王就介绍下 .user.ini 是什么以及如何删除 .user.ini。
一、.user.ini 的作用
首先看 PHP 官方关于 .user.ini 文件的解释:
自 PHP 5.3.0 起,PHP 支持基于每个目录的 INI 文件配置。此类文件 仅被 CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果你的 PHP 以模块化运行在 Apache 里,则用 .htaccess 文件有同样效果。
除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER[‘DOCUMENT_ROOT’] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。
简单来说 php.ini 中的部分配置可以在 .user.ini 中被覆盖。LNMP 为每个网站目录生成 .user.ini 的作用是为了防止跨目录访问和文件跨目录读取。
二、.user.ini 如何删除
如果你尝试使用 rm .user.ini
来删除 .user.ini 文件,那么会得到权限不足的错误:
rm: cannot remove '.user.ini': Operation not permitted
在《VPS 建站教程》中有一个步骤是要赋予 Nginx 操作网络目录的权限,否则一些插件(尤其是缓存插件)无法正常工作,之前老王介绍的《WordPress 后台设置修改语言只显示英语(English)的解决办法》也是 Nginx 没有目录权限的问题导致的。我们可以用下面这个命令修改目录权限组:
chown -R www:www /home/wwwroot/你的域名
同样的,因为 .user.ini 权限问题,会有如下权限不足的提示:
chown: changing ownership of '/home/wwwroot/***.com/.user.ini': Operation not permitted
所以,在修改 .user.ini 权限组或者删除 .user.ini 前,我们需要手动解除 .user.ini 文件的锁定:
chattr -i /home/wwwroot/你的域名/.user.ini
之前再进行 .user.ini 删除操作就行了。