PHPのchmod()関数とは?ファイルのパーミッションを変更する方法を解説
chmod()関数とは
PHPのchmod()関数は、指定したファイルやディレクトリのモード(パーミッション/アクセス権)を変更するための関数です。処理が成功した場合はTRUEを返し、失敗した場合はFALSEを返します。
なお、この関数はセーフモードが有効な環境では制限を受ける場合があるほか、Windows環境では一部の権限のみサポートされる点に注意してください。
基本構文
chmod($file_path, $file_mode)
パラメータ
file_path − パーミッションを変更したいファイルまたはディレクトリへのパスを指定します。必須項目です。
file_mode − 設定するモード(アクセス権)を数値で指定します。詳細は後述の「ファイルモードパラメータ」を参照してください。
ファイルモードパラメータの構成
file_modeは、次の4つの要素で構成される8進数で指定します。
- 先頭の「0」(8進数であることを示すプレフィックス)
- 所有者(オーナー)に対する権限
- 所有者が属するユーザーグループに対する権限
- その他のユーザーに対する権限
各対象に複数の権限を与えたい場合は、以下の数値を合計して指定します。
- 1 = 実行権限
- 2 = 書き込み権限
- 4 = 読み取り権限
例えば、「読み取り+書き込み」なら4+2=6、「読み取り+実行」なら4+1=5、「すべての権限」なら4+2+1=7となります。
戻り値
chmod()関数は以下の値を返します。
- 成功した場合:TRUE
- 失敗した場合:FALSE
使用例
例1:所有者に読み書き権限のみ付与(0600)
ファイル「one.txt」のモードを変更します。所有者には読み取り・書き込み権限を与え、それ以外のユーザーには一切の権限を与えません。
<?php
// ファイルのモードを設定
// 所有者:読み取り・書き込み、その他:権限なし
chmod("one.txt", 0600);
?>
例2:所有者に読み書き、その他に読み取り権限を付与(0644)
ファイル「two.txt」のモードを変更します。所有者には読み取り・書き込み権限を、その他のユーザーには読み取り権限のみを与えます。
<?php
// ファイルのモードを設定
// 所有者:読み取り・書き込み、その他:読み取りのみ
chmod("two.txt", 0644);
?>
例3:所有者に全権限、その他に読み取り・実行権限を付与(0755)
ファイル「three.txt」のモードを変更します。所有者にはすべての権限を、その他のユーザーには読み取り・実行権限を与えます。
<?php
// ファイルのモードを設定
// 所有者:全権限、その他:読み取り・実行
chmod("three.txt", 0755);
?>
例4:所有者に全権限、グループに読み取り権限を付与(0740)
ファイル「four.txt」のモードを変更します。所有者にはすべての権限を、所有者の所属グループには読み取り権限のみを与えます。
<?php
// ファイルのモードを設定
// 所有者:全権限、グループ:読み取りのみ
chmod("four.txt", 0740);
?>
例5:所有者に全権限、グループに読み取り・実行権限を付与(0750)
ファイル「five.txt」のモードを変更します。所有者にはすべての権限を、所有者の所属グループには読み取り・実行権限を与えます。
<?php
// ファイルのモードを設定
// 所有者:全権限、グループ:読み取り・実行
chmod("five.txt", 0750);
?>
まとめ
chmod()関数を使うことで、ファイルやディレクトリごとに柔軟にアクセス権を制御できます。所有者・グループ・その他のユーザーそれぞれに対し、読み取り(4)・書き込み(2)・実行(1)の数値を組み合わせて指定するのがポイントです。Webアプリケーションのセキュリティ確保のためにも、必要最小限の権限だけを付与するよう心がけましょう。
-
PHPのfile()関数とは?使い方・パラメータ・戻り値をわかりやすく解説
PHPのfile()関数は、指定したファイル全体を読み込み、その内容を行ごとに分割した配列として返す関数です。テキストファイルを簡単に扱いたい場合に便利な基本関数の一つです。構文file(file_path, flag, context)パラメータfile_path − 読み込みたいファイルへのパスを指定します。flag − 省略可能なパラメータで、以下の定数を1つ、または複数組み合わせて指定できます。FILE_USE_INCLUDE_PATH − include_path の中からファイルを検索します。FILE_IGNORE_NEW_LINES − 配列の各要素の末尾に改行文字を追加しません
-
PHPのdelete()関数とは?使い方とサンプルコードをわかりやすく解説
PHPのdelete()関数は、指定したファイルを削除するための関数です。削除したいファイルのパスをパラメータとして渡すことで、そのファイルをシステムから削除できます。 構文(Syntax) delete(file_path) パラメータ(Parameters) file_path: 削除したいファイルのパスを指定します。相対パス・絶対パスのどちらでも指定可能です。 戻り値(Return) delete()関数は、処理結果に応じて以下のブール値を返します。 true: ファイルの削除が成功した場合 false: ファイルの削除に失敗した場合(ファイルが存在しない、権限がないなど) 使用