31

b.phpとtest.txtの2つのファイルがあります

<?php 
$b = "test.txt";
unlink($b);
?>

エラーは次のとおりです。警告:unlink(test.txt)[function.unlink]:アクセスが拒否されました

なぜ?b.phpとtest.txtは777で、同じグループ/ログインです

親ディレクトリに777を設定すると、リンク解除を実行できますが、777を設定して755に戻す必要がありますか?

4

5 に答える 5

35

b.phpユーザー (または Web サーバーを介してを実行するプロセスのようにCLI) には、ファイルが配置されているディレクトリへの書き込みアクセスが必要です。ディレクトリの内容を更新しているため、ファイルへのアクセスが十分ではありません。

PHPchmod()関数を使用してファイルまたはフォルダーのモードを に設定する場合は、数値が 8 進数として正しく解釈されることを確認するために777使用する必要があることに注意してください。0777

于 2012-11-27T23:26:26.910 に答える
10

他の友人が持っているすべての回答に加えて、この投稿を見ている誰かが「ファイル」ではなく「フォルダー」を削除する方法を探している場合は、フォルダーをphp rmdir() 関数で削除する必要があることに注意する必要があります。で「フォルダ」を削除しよunlink()うとすると、「許可が拒否されました」という間違った警告メッセージが表示されます

ただし、フォルダーとファイルを作成することはできますmkdir()が、フォルダーを削除する方法 ( ) は、ファイルを削除する方法 ( )rmdir()とは異なります。unlink()

最終的に事実として:

多くのプログラミング言語では、パーミッション関連のエラーが実際のパーミッションの問題を直接意味するわけではありません

たとえば、readSync存在しないファイルがnode fs module必要な場合は、間違ったEPERMエラーが発生します

于 2018-03-07T11:04:54.363 に答える
2
// Path relative to where the php file is or absolute server path
chdir($FilePath); // Comment this out if you are on the same folder
chown($FileName,465); //Insert an Invalid UserId to set to Nobody Owner; for instance 465
$do = unlink($FileName);

if($do=="1"){ 
    echo "The file was deleted successfully."; 
} else { echo "There was an error trying to delete the file."; } 

これを試して。それが役に立てば幸い。

于 2012-11-27T23:33:24.073 に答える