プロが教える店舗&オフィスのセキュリティ対策術

PHPでアップロードした画像をunlinkという関数で削除しようとしています。
ところがエラーが表示されて削除されません
Operation not permitted in・・・
と表示されます。
ちなみにアップロードの際は
chmod($sendpath,0666);
として権限を考慮したつもりなのですが・・
よろしくお願いします。

A 回答 (4件)

書き込めるのに消せないってのはむずかしすですね。


echo is_file($path);
echo file_exists($path);
echo is_readable($path);
echo is_writable($path);
これは全部 true でしょうか。
無いと思いますがパーミッションの与えすぎを疑って606, 600にしてみるとか
フルパスじゃないならフルパス与えてみるとか

あとchmodの小ネタは、intじゃないとダメという答えです。
この関数は型に厳しいという話です。
    • good
    • 0

レンタルサーバだと、chmodコマンドって使えないような気がします。

いつだったか、自分も過去にchmodコマンドでパーミッションを変えようとしたことがありますが、失敗したことがあります。「chmod($sendpath,0666);」の結果がどうなっているかを確認する必要がありますね。
あと、この状況なので不可能だと思いますが、「exec("rm -f $filename");」という方法でも削除はできます。参考までに。
    • good
    • 0

$sendpathに何を入れているかがわからないので何とも言えませんが、ディレクトリ名も入れてみてはいかがでしょうか。


$sendpath = "hoge/hoge.php";
$result = unlink($sendpath);

この回答への補足

Operation not permitted in・・・
というエラーで困っています。
sendpathはアップロードの際に利用している変数です。
unlinkとは関係ありません。
unlinkの際はディレクトリ名を含めて入れています。
このエラーはレンタルサーバに起因するエラーですかね?
原因がわかりません。
よろしくお願いします。

補足日時:2009/03/09 21:18
    • good
    • 0

現在のパーミッション設定はどうなっているのでしょう?


FTPだと消せますか?

余談ですが
$per = '0666';
chmod($sendpath, $per);

chmod($sendpath, 0666);
は動作が異なります。

この回答への補足

FTPでは削除できます。
しかしunlink関数で消そうとすると上記のエラーが発生します。
で、パーミッションはディレクトリは777で
入っている画像ファイルのパーミッションは666です。
PHPの画像アップロードのプログラム上で
move_uploaded_file($upfile, $sendpath)がtrueを返すときに
chmod($sendpath,0666)
を指定しました。
$sendpathは画像のパスと画像名です。
回答でいただいた
$per = '0666';
chmod($sendpath, $per);と
chmod($sendpath, 0666);
は動作が異なります。
というのはなぜですか?とても興味があります。
あわせてご回答いただければうれしいです。
よろしくお願いします。

補足日時:2009/03/08 15:19
    • good
    • 0

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