電子書籍の厳選無料作品が豊富!

PHP 削除やコピーが出来ない

$rcd = unlink("test.txt");
$rcd = `rm test.txt`;
$rcd = exec('test.txt');

上記のように、削除コマンドを実行しても削除されない。


コピーコマンドも、同じくで
copy("hoge.txt", "hoge.dat");
fcopy("hoge.txt", "hoge.dat", TRUE);
`cp hoge.txt hoge.dat`

と、やってみたが削除対象ファイルなどに変化はありません。
ちなみに、削除対象ファイルのパーミッションは、644。
PHPファイルは、755.
レンタルサーバーを、二つほど変えてみたが同じでした。

エラーを表示することも無かったので、何が悪いのかさっぱり分かりません。


何か、よい方法を教えてください。
よろしくお願いします。

A 回答 (1件)

おそらくディレクトリのパーミッションの問題でしょう。


ディレクトリのパーミッションが755あたりになってませんか?

まず第一に、ファイルを削除したりコピーしたりするためには、そのファイルのパーミッションではなく、そのファイルがあるディレクトリのパーミッションが問題になります。
たとえファイルそのものに対しては読み書きする権限があっても、書き込み権限のないディレクトリにあるファイルを消すことが出来ません。

次に、たいていのWWWサーバは、「ユーザーWWW」など、利用者とは別の権限で動いています。
そのためディレクトリのパーミッションが「755」だったりした場合は、WWWサーバ上で動かすPHPスクリプトからは、そのディレクトリ上のファイルを消したり、新たなファイルを作ったりすることはできません。

ファイルの削除等を行いたい場合は、対象ディレクトリのパーミッションを777あたりにする必要があります。
    • good
    • 0
この回答へのお礼

お礼が遅くなり、済みません。

動作確認をしてみた所、上手く行きました。
タダ、サーバーによっては、対象ディレクトリのパーミッションを777にすると
OKに成る物もあれば、OGに成る物もありました。

こればっかりは、サーバーに合わせ込まないと行けないようです。

お礼日時:2010/10/05 00:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!