PHPプログラミング

レシピ

ファイル / ディレクトリ

ファイル/ディレクトリが書き込み可能か確認する

特定のファイル/ディレクトリへの書き込みが可能かを確認する方法について解説します。

この記事のポイント

  • ファイル / ディレクトリに書き込み可能かを確認する
  • パーミッションのどこを参照して書き込み可能か判断しているかが分かる
  • if文の条件式に組み込んだ具体的な使用例が分かる

目次

ファイル/ディレクトリへの書き込み権限を確認する

特定のファイル/ディレクトリの内容を編集したい場合、そのファイルへの書き込みが可能であるかを調べる必要があります。
特定のファイルへの書き込みが可能であるかはis_writable関数を使って調べることが可能です。

コード例

is_writable("./memo.txt");

書き込み可能な場合はtrue、書き込み不可の場合、もしくは該当するファイル/ディレクトリが存在しない場合はfalseを返します。

この関数はパーミッションの書き込み権限を確認します。
具体的には、赤字の箇所の「その他」のパーミッションです。

パーミッション表示例

-rwxrwxrwx+ 1 test user  19 Dec 13 15:00 memo.txt

使用例

次のような4つのファイルとディレクトリに対し、is_writable関数で書き込み可能であるかを確認していきます。

パーミッション表示例

-rw-r--r--+ 1 test user  119 Dec 13 15:20 index.html
-rwx----w-+ 1 test user  19 Dec 13 15:02 memo.txt
drwxr-xr-x+ 2 test user  64 Dec 13 15:21 not_writable_dir
drwxr---w-+ 2 test user  64 Dec 13 15:01 temp

コード例

// ファイル・ディレクトリへのパス
$path1 = './test/index.html';
$path2 = './test/memo.txt';
$path3 = './test/not_writable_dir';
$path4 = './test/temp/';

var_dump( is_writable($path1));
var_dump( is_writable($path2));
var_dump( is_writable($path3));
var_dump( is_writable($path4));

var_dump関数で返り値を出力します。

返り値の出力例

bool(false)
bool(true)
bool(false)
bool(true)

それぞれのファイル/ディレクトリに対して、書き込み可能であるかが論理値で返ってきます。
実際には、次のようにif文などの条件式に組み込んで使用する機会が多いです。

コード例

$path = './test/index.html';

if( is_writable($path) ) {
	echo 'こちらのファイルは書き込み可能です。';
} else {
	echo 'こちらのファイルは書き込み不可です。';
}

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

コメントありがとうございます!
運営の参考にさせていただきます。