ディレクトリがPHPで書き込み可能かどうかを確認する方法を知っている人はいますか?
この機能is_writable
はフォルダでは機能しません。
編集:それは動作します。受け入れられた答えを参照してください。
ディレクトリがPHPで書き込み可能かどうかを確認する方法を知っている人はいますか?
この機能is_writable
はフォルダでは機能しません。
編集:それは動作します。受け入れられた答えを参照してください。
はい、フォルダに対しては機能します。
ファイル名が存在し、書き込み可能である場合はTRUEを返します。filename引数は、ディレクトリが書き込み可能かどうかを確認できるディレクトリ名にすることができます。
これはコードです:)
<?php
$newFileName = '/var/www/your/file.txt';
if ( ! is_writable(dirname($newFileName))) {
echo dirname($newFileName) . ' must writable!!!';
} else {
// blah blah blah
}
所有者/グループ/世界をより具体的にする
$dir_writable = substr(sprintf('%o', fileperms($folder)), -4) == "0774" ? "true" : "false";
平和...
関数に完全なファイル パスを送信している可能性がありis_writable()
ます。is_writable()
ファイルがディレクトリにまだ存在しない場合は false を返します。この場合、ファイル名が削除されたディレクトリ自体を確認する必要があります。これを行うと、is_writable
ディレクトリが書き込み可能かどうかが正しく通知されます。ファイルパスが含まれている場合は、次$file
のようにします。
$file_directory = dirname($file);
次にis_writable($file_directory)
、フォルダーが書き込み可能かどうかを判断するために使用します。
これが誰かに役立つことを願っています。
is_writableのドキュメントによると、これは正常に機能するはずですが、「フォルダ」と言ったので、これはWindowsの問題である可能性があります。コメントは回避策を示唆しています。
(以前に急いで読んだことで、末尾のスラッシュが重要であると思いましたが、それはこの回避策に固有であることが判明しました)。
stat()
システム統計によく似ていますが、PHPです。チェックしたいのは、他の言語(IE C / C ++)で他のstatを呼び出す場合と同じように、モード値です。
PHPのマニュアルによると、is_writableはディレクトリで正常に機能するはずです。
これは私がそれを行う方法です:
でファイルを作成しfile_put_contents()
、戻り値を確認します。それが正の場合 (書き込まれたバイト数)、先に進んで必要なことを実行できます。FALSE の場合は書き込み可能ではありません
$is_writable = file_put_contents('directory/dummy.txt', "hello");
if ($is_writable > 0) echo "yes directory it is writable";
else echo "NO directory it is not writable";
次に、 unlink() を使用してダミーファイルを削除できます
unlink('directory/dummy.txt');