FAQ過ぎるけれど、PHPでブラウザからファイルをアップロードしてもうまくいかない場合のサーバ側設定確認事項

あまりにも定番すぎる、FAQというにもおこがましい内容ではあるかもしれないが、メモ。
ブラウザからPHPで書いたシステムにアップロードをする場合、もっと具体的にいうと、formタグ内のaction指定子にPHPスクリプトを指定してファイルのアップロードをさせる場合、ファイルサイズによってはPHPサーバ側の最大容量の制限値を超えてアップロードできない可能性がある。これを回避するための設定があるが、片方だけ設定して残りの片方を忘れる、というパターンが多かったりするので、注意が必要だ。

/etc/php.iniや/usr/local/etc/php/php.iniなど、有効なphp.iniファイルを編集する。
ファイル内に記述されている「upload_max_filesize」がアップロードファイルの最大サイズ設定である。デフォルトは2MB。これを必要なサイズにまで引き上げればよいだろう。
そしてもう1つ。「post_max_size」という設定がある。これはPOSTの際の最大サイズの設定で、こちらのデフォルトは8MB。なので、うっかりupload_max_filesizeを設定して「よしよし10MBにしてやれ」と思って設定しても、実際に10MBのファイルをアップロードしようとすると、post_max_sizeの8MBでひっかかりアップロードができなくなる。そして、しばらく無駄に悩んでしまうことになる(昔悩んだ)。

ということで、両方の値を基本的には同じ値にするなどして対応すればよい。たとえば64MBに設定するなら、以下のようにすればいいだろう。

[text]
upload_max_filesize=64M
post_max_size=64M
[/text]

2つの設定は特に近しい場所に寄り添っているわけではないので、行検索をかけて探して設定する必要がある。

プロになるための PHPプログラミング入門10日でおぼえるPHP入門教室 第4版即戦力になるための PHPシステム開発の教科書初めてのPHP5 増補改訂版PHPによるWebアプリケーションスーパーサンプル活用編 第3版

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください