2012-05-04 5 views
1

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

編集:これが適切であれば、私はZymicホスティングを使用しています。しかし私は削除がうまく動作する別のサイトをZymicに持っています。私はそれを取得しません...

EDIT:私は削除するコードでPHPファイルにアクセスするためにajaxを使用し、ajaxは削除するファイル名を送信します。私は警告メッセージが私のためにそれを印刷するので、送信するファイル名が正しいことを知っています。 PHPコードは単純に:

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

編集:私はそれを固定!私はなぜこれが働いたのか分かりませんが、755から775までのディレクトリをFTP-chmoddedしました。

+3

コードを投稿してください。 – Tibor

+1

ファイルとディレクトリのアクセス許可は何ですか? [AppArmor](http://wiki.ubuntu.com/AppArmor/)、[SELinux](http)などの[必須アクセス制御](http://en.wikipedia.org/wiki/Mandatory_access_control)ツールを使用していますか? ://en.wikipedia.org/wiki/Security-Enhanced_Linux)、[TOMOYO](http://tomoyo.sourceforge.jp/index.html.en)、[SMACK](http:// schaufler-ca。 com /)?これらのいずれかがファイルの削除を妨げる可能性があります。関係する可能性のあるメッセージについては、 'dmesg(1)'出力と '/ var/log/audit/audit.log'をチェックしてください。 – sarnold

+0

@sarnoldなぜ答えとして投稿しないのですか? – jjclarkson

答えて

4

ファイルを削除するには、そのファイルを含むフォルダに書き込み権限が必要です。最初にチェックします。

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

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

第二ケース。 775 - その他の所有者(実行、書き込み、読み出し)、グループ(実行、書き込み、読み出し)、(実行、読み取り)

+0

彼はファイルに書き込むことができることを述べた。 – debianek

+1

@debianek:ファイルへの書き込みには、ファイルを削除することと_no_の関係があります。 – sarnold

+0

ディレクトリをChmoddingしているように見えました。しかし、なぜ?私はすでにファイルに書き込むことができます... – DankMemes

1

はあなたが実行しているスクリプトの先頭にこれを追加してください:

error_reporting(E_ALL | E_STRICT); 
起こっている正確に何を指摘することができるはずです

は、チャンスはあなたがLinux環境で作業している場合は特に、フォルダ

を書き込むための権限を持っていないということです。 Linuxではすべてがファイルであり、フォルダでもあります。ファイルを削除する場合は、フォルダを表すファイルに書き込むことができる必要があります。そのため、削除しようとしているファイルに書き込む権限を持っていれば、削除する必要はありません。

+0

私は知っています!私はそれを修正したと言った!私は775にフォルダをchmodded – DankMemes

1

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

+0

いいえ、私は775にchmoddedと働いた。 – DankMemes

関連する問題