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


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

一開始百度查找原因,沒找到,百思不得其解,后來在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 可在任何地方設定


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM