linux chattr命令与php的配置文件.user.ini

时间:2022-06-02 09:32:11

  今天做shell脚本,来自动更新web项目版本,但是遇到了一个问题

linux chattr命令与php的配置文件.user.ini

一开始百度查找原因,没找到,百思不得其解,后来在qq群里求助,热心的群友告诉我,是不是这个文件被锁定了,建议我用chattr -i命令,于是我开始学习chattr

以下介绍摘自菜鸟教程

Linux chattr命令用于改变文件属性。

这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:

  1. a:让文件或目录仅供附加用途。
  2. b:不更新文件或目录的最后存取时间。
  3. c:将文件或目录压缩后存放。
  4. d:将文件或目录排除在倾倒操作之外。
  5. i:不得任意更动文件或目录。
  6. s:保密性删除文件或目录。
  7. S:即时更新文件或目录。
  8. u:预防以外删除。

语法

chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]

参数

  -R 递归处理,将指定目录下的所有文件及子目录一并处理。

  -v<版本编号> 设置文件或目录版本。

  -V 显示指令执行过程。

  +<属性> 开启文件或目录的该项属性。

  -<属性> 关闭文件或目录的该项属性。

  =<属性> 指定文件或目录的该项属性。

chattr -i的意思就是关闭"i"选项所对应的功能:不得任意更动文件或目录.

chattr -i .user.ini,再尝试chown www:www .user.ini,可以了.

其实这个文件不可以被chown,因为这个.user.ini是php的配置文件.不可以随意改动

以下是官方手册描述

.user.ini 文件

自 PHP 5.3.0 起,PHP 支持基于每个目录的 .htaccess 风格的 INI 文件。此类文件CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果使用 Apache,则用 .htaccess 文件有同样效果。

除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录$_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。

在 .user.ini 风格的 INI 文件中只有具有 PHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI 设置(注释1)可被识别。

两个新的 INI 指令,user_ini.filename 和 user_ini.cache_ttl 控制着用户 INI 文件的使用。

user_ini.filename 设定了 PHP 会在每个目录下搜寻的文件名;如果设定为空字符串则 PHP 不会搜寻。默认值是 .user.ini

user_ini.cache_ttl 控制着重新读取用户 INI 文件的间隔时间。默认是 300 秒(5 分钟)。

 

注释1.

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

php的配置可以在不同情况下被设置。有的配置既可以在php.ini中设置,也可以在php脚本中设置(使用 ini_set函数),有的配置只能在php.ini或者httpd.conf中.

例如 output_buffering指令是属于 PHP_INI_PERDIR,因而就不能用 ini_set() 来设定。但是 display_errors指令是属于 PHP_INI_ALL 因而就可以在任何地方被设定,包括 ini_set()

下表摘自手册

PHP_INI_* 模式的定义
模式 含义
PHP_INI_USER 可在用户脚本(例如 ini_set() )或 Windows 注册表(自 PHP 5.3 起)以及 .user.ini 中设定
PHP_INI_PERDIR 可在 php.ini.htaccesshttpd.conf 中设定
PHP_INI_SYSTEM 可在 php.inihttpd.conf 中设定
PHP_INI_ALL 可在任何地方设定