• ベストアンサー

画像の削除

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

質問者が選んだベストアンサー

  • ベストアンサー
noname#87667
noname#87667
回答No.3

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

その他の回答 (3)

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.4

書き込めるのに消せないってのはむずかしすですね。 echo is_file($path); echo file_exists($path); echo is_readable($path); echo is_writable($path); これは全部 true でしょうか。 無いと思いますがパーミッションの与えすぎを疑って606, 600にしてみるとか フルパスじゃないならフルパス与えてみるとか あとchmodの小ネタは、intじゃないとダメという答えです。 この関数は型に厳しいという話です。

noname#87667
noname#87667
回答No.2

$sendpathに何を入れているかがわからないので何とも言えませんが、ディレクトリ名も入れてみてはいかがでしょうか。 $sendpath = "hoge/hoge.php"; $result = unlink($sendpath);

eccschool
質問者

補足

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

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.1

現在のパーミッション設定はどうなっているのでしょう? FTPだと消せますか? 余談ですが $per = '0666'; chmod($sendpath, $per); と chmod($sendpath, 0666); は動作が異なります。

eccschool
質問者

補足

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

関連するQ&A