PHP 檔案系統 chmod() 函式



PHP 檔案系統 chmod() 函式可以更改指定檔案的許可權。顧名思義,更改模式意味著它試圖更改指定檔案的模式。成功時返回 true,否則返回 false。

要點

  • 模式不會自動假定為八進位制值,因此字串(例如“g+w”)無法正常工作。為了確保預期的操作,我們需要在模式前加上零 (0)。
  • 引數“mode”由三個八進位制數字組成:檔案所有者、所有者所屬的使用者組以及其他所有人的訪問限制,按此順序。
  • 數字 1 表示我們授予執行許可權,數字 2 表示我們使檔案可寫,數字 4 表示我們使檔案可讀。我們可以將這些數字加起來以指定所需的許可權。

語法

以下是 PHP 檔案系統 chmod() 函式的語法:

bool chmod ( string filename, int permissions )

引數

以下是 chmod() 函式的必填和可選引數:

序號 引數及描述
1

filename(必填)

檔案的路徑。

2

permissions(必填)

您想要更改的許可權。許可權可以透過兩種方式給出:八進位制表示法和符號表示法。

返回值

成功時返回 TRUE 值,失敗時返回 FALSE。

許可權表示

許可權可以透過兩種方式給出:

  • 八進位制表示法
  • 符號許可權

八進位制表示法

八進位制表示法是表示 Unix 許可權的一種方式。它基本上由三個數字組成,例如 777 或 775。其中 - 所有者是第一個數字,組是第二個,其他使用者是第三個。

使用 0 到 7 的數字,這個八進位制數系統如下:

  • 0 表示“無”許可權,
  • 1 表示“執行”許可權,
  • 2 表示“寫入”許可權,
  • 4 表示“讀取”許可權,

要為使用者類提供許可權,請將上面的數字加起來。例如,將 4+1 = 5 加起來,以僅授予使用者組“讀取”和“執行”許可權。讓我們看看下面的示例:

  • 0 (0+0+0) 表示“無”許可權。
  • 1 (0+0+1) 表示“執行”許可權。
  • 2 (0+2+0) 表示“寫入”許可權。
  • 3 (0+2+1) 表示“寫入”和“執行”許可權。
  • 4 (4+0+0) 表示“讀取”許可權。
  • 5 (4+0+1) 表示“讀取”和“執行”許可權。
  • 6 (4+2+0) 表示“讀取”和“寫入”許可權。
  • 7 (4+2+1) 表示“讀取”、“寫入”和“執行”許可權。

一些八進位制表示法許可權如下:

  • 775:這為所有者和組提供讀取、寫入和執行許可權,併為其他使用者提供讀取和執行許可權。
  • 700:這為所有者提供讀取、寫入和執行許可權,同時拒絕其他使用者和組訪問。

符號許可權

在符號許可權方法中,許可權表示如下:

  • r:讀取許可權,
  • w:寫入許可權,
  • e:執行許可權。

使用者類進一步表示為:

  • u:檔案或資料夾的所有者(使用者)。
  • g:具有相同許可權的組。
  • o:所有其他使用者(除所有者和組之外)。
  • a:它包含所有(u、g 和 o)。

我們使用以下操作為使用者類提供上述許可權:

  • +:新增訪問許可權,
  • -:移除訪問許可權,
  • =:設定精確的訪問許可權。

PHP 版本

chmod() 函式最初作為核心 PHP 4 的一部分引入,並且與 PHP 5、PHP 7、PHP 8 相容。

示例

在下面的程式碼中,我們使用了 PHP 檔案系統 chmod() 函式來設定許可權 0600,它為所有者提供讀取和寫入許可權,而其他所有人則不提供任何許可權。

<?php
   // File path
   $file = '/Applications/XAMPP/xamppfiles/htdocs/mac/myfile1.txt';

   // Owner can read and write, others have no permissions
   $permissions = 0600; 

   if (chmod($file, $permissions)) {
      echo "Permissions has changed successfully for myfile1.txt.";
   } else {
      echo "Failed to change permissions for myfile1.txt.";
   }
?>

輸出

這將產生以下結果:

  • 如果許可權被授予。

    Permissions has changed successfully for myfile1.txt.
    
  • 如果許可權被拒絕。

    Failed to change permissions for myfile1.txt.
    

示例

在給定的示例中,我們將使用chmod()函式設定許可權0644,這將為所有者提供讀寫許可權,為其他人提供只讀許可權。

<?php
   // File path
   $file = '/Applications/XAMPP/xamppfiles/htdocs/mac/myfile2.txt';

   // read and write for owner and read-only for others
   $permissions = 0644; 

   if (chmod($file, $permissions)) {
      echo "Permissions has changed successfully for myfile2.txt.";
   } else {
      echo "Failed to change permissions for myfile2.txt.";
   }
?>

輸出

這將生成以下輸出:

  • 如果許可權被授予。

    Permissions has changed successfully for myfile2.txt.
    
  • 如果許可權被拒絕。

    Failed to change permissions for myfile2.txt.
    

示例

在下面的示例中,我們使用了chmod()函式來設定許可權0755,這將為所有者提供所有許可權,為其他人提供讀和執行許可權。因為在某些情況下,所有者需要向其他人提供讀和執行許可權。

<?php
   // File path
   $file = '/Applications/XAMPP/xamppfiles/htdocs/mac/myfile3.txt';

   // everything for the owner and read and execute for others
   $permissions = 0755; 

   if (chmod($file, $permissions)) {
      echo "Permissions has changed successfully for myfile3.txt.";
   } else {
      echo "Failed to change permissions for myfile3.txt.";
   }
?>

輸出

這將產生以下結果:

  • 如果許可權被授予。

    Permissions has changed successfully for myfile3.txt.
    
  • 如果許可權被拒絕。

    Failed to change permissions for myfile3.txt.
    

示例

在下面的示例中,我們使用了chmod()函式來設定許可權0740,這將為所有者提供所有許可權,為所有者組提供讀許可權,並且其他人沒有許可權。

<?php
   // File path
   $file = '/Applications/XAMPP/xamppfiles/htdocs/mac/myfile4.txt';

   // everything for owner, read for owner's group, and no permissions for others
   $permissions = 0740; 

   if (chmod($file, $permissions)) {
      echo "Permissions has changed successfully for myfile4.txt.";
   } else {
      echo "Failed to change permissions for myfile4.txt.";
   }
?>

輸出

此PHP程式碼的結果為:

  • 如果許可權被授予。

    Permissions has changed successfully for myfile4.txt.
    
  • 如果許可權被拒絕。

    Failed to change permissions for myfile4.txt.
    

注意

如果出現問題,該函式可能會也可能無法修改檔案或資料夾的許可權。因此,請使用條件語句來確保程式碼的成功並保持其安全。

總結

內建的PHP檔案系統函式chmod()檢查Web應用程式中的目錄和檔案是否安全並具有正確的許可權。

php_function_reference.htm
廣告