最終更新日:
公開日:
レシピ
ファイル / ディレクトリ
ファイル/ディレクトリが書き込み可能か確認する
ファイル/ディレクトリへの書き込みが可能かを確認する方法について解説します。
この記事のポイント
- ファイル / ディレクトリに書き込み可能かを確認する
- パーミッションのどこを参照して書き込み可能か判断しているかが分かる
- if文の条件式に組み込んだ具体的な使用例が分かる
目次
ファイル/ディレクトリへの書き込み権限を確認する
PHPでファイル/ディレクトリの内容を編集したい場合、そのファイルへの書き込みが可能であるかを調べる必要があります。
特定のファイルへの書き込みが可能であるかは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)); // bool(false)
var_dump( is_writable($path2)); // bool(true)
var_dump( is_writable($path3)); // bool(false)
var_dump( is_writable($path4)); // bool(true)
それぞれのファイル/ディレクトリに対して、書き込みが可能であるかが論理値で返ってきます。
var_dump関数で返り値を出力してみると、書き込み可能なパーミッションが分かります。
is_writable関数を実際に使う場面では、以下のようにif文などの条件式に組み込んで使用する機会が多いです。
コード例
$path = './test/index.html';
if( is_writable($path) ) {
echo 'こちらのファイルは書き込み可能です。';
} else {
echo 'こちらのファイルは書き込み不可です。';
}