is_writable はこれを処理するために使用されます。PHP は、Web サーバーを実行しているユーザー名 (通常は「nobody」) としてのみファイルにアクセスできる可能性があることに注意してください。セーフ モードの制限にはカウントされません。
例 #1 is_writable() 例
コードをコピー コードは次のとおりです:
$ filename = 'test.txt';
if (is_writable($filename)) {
echo 'ファイルは書き込み可能です';
} else {
echo 'ファイルは書き込み可能ではありません';
}
?>
コードをコピーします コードは次のとおりです:
/*問題が発生します: ディレクトリが書き込み可能かどうかを確認する方法と、その方法ディレクトリ内にディレクトリとファイルがある場合は、すべてをチェックする必要があります。
アイデア:
(1) まず、空のディレクトリが書き込み可能かどうかを確認するアルゴリズムを書き出します。
ディレクトリ内にファイルを生成します。生成できません。ディレクトリに書き込み権限がないことを意味します
(2) 再帰的メソッドを使用してチェックします
コード実装:
*/
set_time_limit(1000); function check_dir_iswritable ($dir_path){
$dir_path=str_replace(' ','/',$dir_path);
$is_writale=1;
if(!is_dir($dir_path)){
$is_writale =0;
return $is_writale;
} else{
$file_hd=@fopen($dir_path.'/test.txt','w');
@fclose($file_hd);
@ unlink($dir_path.'/test.txt');
return $is_writale; dir_hd=opendir($dir_path);
while(false !==($file=readdir($dir_hd))){
if ($file != "." && $file != ".." ) {
if(is_file($dir_path.'/ '.$file)){
//ファイルは書き込み可能ではないため、直接返します
if(!is_writable($dir_path.'/'.$ file)){
return 0;
}
}else{
$file_hd2=@fopen($dir_path.'/'.$file.'/test.txt','w') ;
if(!$file_hd2){
@fclose ($file_hd2)
@unlink($dir_path.'/'.$file.'/test.txt'); =0;
return $is_writale;
}
//再帰
$is_writale=check_dir_iswritable($dir_path.'/'.$file)
}
}
}
return $is_writale;
}
上記の例では、主に fopen を使用してディレクトリにファイルを作成するか、ファイルにコンテンツを書き込みます。ディレクトリの権限を決定できます。