1

ファイルを削除するPHPスクリプトがあります。ルートディレクトリからファイルを削除できますが、サブディレクトリから削除しようとすると、「アクセスが拒否されました」と表示されます。ファイルが存在し、ファイルの読み取りと書き込みができるためPHPがファイルにアクセスできることはわかっていますが、ファイルを削除することはできません。なんで?

編集:これが関連している場合、私はZymicホスティングを使用しています。しかし、削除が正常に機能するZymic上の別のサイトがあります。理解できません...

編集:私はajaxを使用して削除するコードでPHPファイルにアクセスし、ajaxは削除するファイル名を送信します。警告メッセージが表示されるので、送信されるファイル名が正しいことはわかっています。PHPコードは単純です:

$file=$_POST['file'];
echo unlink($file);

編集:私はそれを修正しました!なぜこれが機能したのかわかりませんが、ディレクトリを755から775にFTPで変更しました。なぜ機能したのか誰か教えてもらえますか?

4

3 に答える 3

4

ファイルを削除するには、そのファイルを含むフォルダーへの書き込み権限が必要です。最初にそれを確認してください。

CHMOD xxx -> 所有者グループ その他

最初のケース: 755 - 所有者 (読み取り、書き込み、実行)、グループ (読み取り、実行)、その他 (読み取り、実行)

2 番目のケース: 775 - 所有者 (読み取り、書き込み、実行)、グループ (読み取り、書き込み、実行)、その他 (読み取り、実行)

于 2012-05-04T22:18:29.237 に答える
1

unlink($ myfile)を使用する前に、まずfclose($ myfile)を実行する必要があります。これは、サーバー上で誰かが開いている場合、削除されないためです。また、このスクリプトを削除するファイルと同じディレクトリに配置してください。そうしないと、誤ってDIR全体が削除される可能性があります。

于 2012-11-09T04:45:32.917 に答える
1

実行中のスクリプトの先頭にこれを追加してみてください。

error_reporting(E_ALL | E_STRICT);

何が起こっているかを正確に指摘できるはずです。フォルダへの書き込み権限がない可能性があります

特に Linux 環境で作業している場合。Linux では、すべてがファイルであり、フォルダーも含まれます。ファイルの削除に関しては、フォルダーを表すファイルに書き込むことができる必要があります。そのため、削除しようとしているファイルへの書き込み権限を持っていても、削除とは何の関係もありません。

于 2012-05-04T22:39:35.140 に答える