move_uploaded_fileの挙動

2008/10/17 | PHPの基本

move_uploaded_file関数を使っていて問題が起こった。この関数を使ってアップロードしたファイルを適切な場所に保存していたのだが、保存したファイルのダウンロードができない。Permission Errorが出る。調べてみたらパーミッションが600になっていた。おそらくオーナーがapacheか何かなので、apache以外の権限では操作できないことになっているようだ。

move_uploaded_file関数をcopy関数に置き換えてみるとこの問題は解決した(rename関数にすべきだったかな)。なぜmove_uploaded_fileとcopy関数で、移動されたファイルのパーミッションが変わってしまうのだろうか(変えるような仕様になっているのだろうか)。move_uploaded_file関数のマニュアルを読むと「セーフモードとopen_basedirの両者を考慮」とか「PHP を通じてアップロードされたファイルのみを移動できる」とか書いてあるので、このあたりの影響のせいだろう。本当のところはソースを読まないとわからないけれど。

コメントを残す


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net