2007年03月12日

添付ファイルがUPできなくなった

検索で少しでもヒットするようなタイトルにしてみました(笑)

と言うわけでPukiWikiでPHPのアップデート後や、レンタルサーバなんかを使っていてある日突然ファイル添付ができなくなったときの対応。

同様の問題が一応、公式サイトにも質問が出ていますが結局解決していないので新たにエントリを起こすことにしました。

で、まず症状は以下のような感じ。

  • 「○○にアップロードしました」と表示されるのに実際はアップロードされていない
  • attachフォルダを見てみるとファイルの実体は見あたらず、アップロードした時刻のlogファイル(中身は1だけ)が作成されている
  • 本体のソースは全然弄ってないのに発症
  • PHPを古めのバージョンから最近のバージョンへアップデートしたら発症
  • もしくはレンタルサーバなどでサーバメンテ後に急に発症
そして、これの原因ですが、ズバリsafe-mode時のopen_basedirの穴が未だにぽろぽろ修正されているため。

まぁ、どのぐらいの頻度で修正されているかは

辺りを見て頂くことにして、実際今回問題になったのはこの関数
  • 注意: move_uploaded_file() は セーフモード と open_basedir の両者を考慮しています。 しかしながら、アップロードされたファイルを移動する destination パスのみ制限が設けられます。 そこでは filename がそれらの制限に抵触する可能性があるためです。 move_uploaded_file() は PHP を通じてアップロードされたファイルのみを移動できるようにすることで この操作の安全性を保証しています。
注意書きにもあるように本来、宛先PATHのみ考慮されるはずなんですが、手元のPHP4.4.6では何故か元になるアップロードPATHもこれの範疇に入っています(苦笑)

続きを読む...

Posted by Takuchan at 01:35 | コメント (0) | トラックバック(0)