62

ディレクトリがPHPで書き込み可能かどうかを確認する方法を知っている人はいますか?

この機能is_writableはフォルダでは機能しません。

編集:それは動作します。受け入れられた答えを参照してください。

4

10 に答える 10

98

はい、フォルダに対しては機能します。

ファイル名が存在し、書き込み可能である場合はTRUEを返します。filename引数は、ディレクトリが書き込み可能かどうかを確認できるディレクトリ名にすることができます。

于 2008-09-20T20:09:44.923 に答える
23

これはコードです:)

<?php 

$newFileName = '/var/www/your/file.txt';

if ( ! is_writable(dirname($newFileName))) {

    echo dirname($newFileName) . ' must writable!!!';
} else {

    // blah blah blah
}
于 2010-09-23T22:58:49.347 に答える
6

所有者/グループ/世界をより具体的にする

$dir_writable = substr(sprintf('%o', fileperms($folder)), -4) == "0774" ? "true" : "false";

平和...

于 2011-05-25T07:38:58.713 に答える
5

関数に完全なファイル パスを送信している可能性がありis_writable()ます。is_writable()ファイルがディレクトリにまだ存在しない場合は false を返します。この場合、ファイル名が削除されたディレクトリ自体を確認する必要があります。これを行うと、is_writableディレクトリが書き込み可能かどうかが正しく通知されます。ファイルパスが含まれている場合は、次$fileのようにします。

$file_directory = dirname($file);

次にis_writable($file_directory)、フォルダーが書き込み可能かどうかを判断するために使用します。

これが誰かに役立つことを願っています。

于 2009-10-13T16:31:01.917 に答える
4

is_writableのドキュメントによると、これは正常に機能するはずですが、「フォルダ」と言ったので、これはWindowsの問題である可能性があります。コメントは回避策を示唆しています。

(以前に急いで読んだことで、末尾のスラッシュが重要であると思いましたが、それはこの回避策に固有であることが判明しました)。

于 2008-09-20T20:10:17.587 に答える
2

stat()

システム統計によく似ていますが、PHPです。チェックしたいのは、他の言語(IE C / C ++)で他のstatを呼び出す場合と同じように、モード値です。

http://us2.php.net/stat

于 2008-09-20T20:12:29.253 に答える
1

PHPのマニュアルによると、is_writableはディレクトリで正常に機能するはずです。

于 2008-09-20T20:09:45.640 に答える
0

これは私がそれを行う方法です:

でファイルを作成し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');
于 2015-06-16T12:11:57.087 に答える