2008.10.17

IIS7+PHPのファイルアップロードに注意

今週から社外向けに公開しているWebサーバ(このページを表示しているサーバ)が、
WindowsWebServer2008になりました。

フリーソフトで配布しているBugZeroはPHPで動作しているのですが、
今回WindowsWebServer2008に変更した際にアップロードしたファイルが、
アップロードした人以外には参照できないという問題が発生しました。

原因は、
PHPがファイルのアップロードを行う際にファイルを一時的に別のフォルダに保存し、
アップロード完了後にアップロード先に指定されているフォルダに移動しているため、
一時保存のフォルダのセキュリティでIISの匿名認証のユーザが設定されていない場合、
そのフォルダのセキュリティ設定をファイルが継承してしまいます。
このため実際に保存されるフォルダで匿名認証のユーザが設定されていても、
その設定を引き継がないという状態でした。

解決方法は、
1.PHPの設定ファイルのphp.iniの設定項目にある「upload_tmp_dir」に、
  フォルダを指定する記述を行う。
2.upload_tmp_dirに指定したフォルダに匿名認証のユーザの権限(読み取り権限)を設定する。
3.設定を反映するためにIISを再起動する。

以上で、アップロードしたファイルに匿名認証のユーザの権限が設定されます。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
ikeda