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

  今天作shell腳本,來自動更新web項目版本,可是遇到了一個問題php

一開始百度查找緣由,沒找到,百思不得其解,後來在qq羣裏求助,熱心的羣友告訴我,是否是這個文件被鎖定了,建議我用chattr -i命令,因而我開始學習chattrweb

如下介紹摘自菜鳥教程shell

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<版本編號> 設置文件或目錄版本。spa

  -V 顯示指令執行過程。.net

  +<屬性> 開啓文件或目錄的該項屬性。code

  -<屬性> 關閉文件或目錄的該項屬性。server

  =<屬性> 指定文件或目錄的該項屬性。

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 可在任何地方設定
相關文章
相關標籤/搜索