PHPプログラミング

ベストプラクティス

設定

php.iniでファイルのアップロード可能サイズを設定する

  • このエントリーをはてなブックマークに追加

画像をはじめとしたファイルのアップロード機能を実装しても、ファイルサイズ(容量)が大き過ぎるとエラーになってしまうことがあります。今回はファイルアップロードの許可するサイズ(容量)に関する設定方法を解説します。

目次

  1. #  初期値だと小さいアップロードサイズ
  2. #  現在のアップロード可能なサイズを確認する
  3. #  php.iniでファイルのアップロード可能サイズを設定する
  4. #  一度にアップロードできるファイル数を設定する

初期値だと小さいアップロードサイズ

ファイルアップロードの許容するサイズは、何も設定をしていない場合だと2MB(メガバイト)など数MBである場合が多いです。

スマホで撮影した写真画像1枚であれば十分かもしれませんが、1度に複数のファイルをアップロードできるようにしたり、より大きなファイルを扱いたい場合は不十分になることも多いです。

そこで、今回は次のような方を対象にファイルのアップロード可能サイズを設定していきます。

  • 余裕のあるファイルアップロード可能サイズを設定したい
  • ファイルアップロードの実行時間を設定したい

このページでいうファイルの「サイズ」はKB(キロバイト)やMB(メガバイト)などの容量を指します。画像ファイルの横幅、縦幅のようなサイズではありません。

現在のアップロード可能なサイズを確認する

まずは、現在設定されているファイルのアップロード可能なサイズを確認してみましょう。
適当なphpファイルからphpinfo関数を実行し、PHPの設定情報を表示してください。
ここでは「index.php」というファイルで実行します。

index.php

<?php phpinfo(); ?>

次のように設定情報が表示されます。
「Core」の中から、次の4つの項目を確認します。

  • file_uploads – ファイルアップロードを許可する項目。「On」にする
  • max_file_uploads – 一度にアップロードできるファイルの数。
  • memory_limit – PHPの実行に使用するメモリの使用容量。
  • post_max_size – 送信できるPOSTデータの許容サイズ
  • upload_max_filesize – ファイルアップロードの許容サイズ。

phpinfo関数の出力例

各設定項目はアルファベット順に表示されます。

phpinfo関数を実行した出力例

これらのうち、アップロードできるサイズに直接関係するのは「upload_max_filesize」と「memory_limit」です。
memory_limit」は「upload_max_filesize」よりも大きい値を設定するようにします。

php.iniでファイルのアップロード可能サイズを設定する

実際にphp.iniから設定を行っていきましょう。
php.iniの場所が分からない場合は、こちらの記事「php.iniが置いてある場所の探し方」をご覧ください。

vimなどのテキストエディタでphp.iniを開き、「File Uploads」の箇所の「upload_max_filesize」の値を変更してください。
今回は「20M」とし、20MBまでのファイルアップロードを許可する設定にします。

vimでの編集例

Note

設定値は数値だけではなく、末尾にサイズの単位である「M」を指定する必要があるため注意してください。GB(ギガバイト)を指定したい場合は「G」を指定します。

数値を入力したら上書き保存して終了し、Apache(Webサーバー)を再起動してください。
無事再起動がされると、先ほどの変更が反映されます。

設定更新後のPHP設定情報

以上で、ファイルのアップロード可能サイズの設定は完了です。
もし「memory_limit」や「post_max_size」のサイズが「upload_max_filesize」よりも小さい場合は、そちらの値も更新してください。

一度にアップロードできるファイル数を設定する

アップロード可能なファイルサイズの他に、もし複数のファイルを一度にアップロードできるようにしたい場合は「max_file_uploads」の設定を更新してください。

設定場所は先ほど編集した「upload_max_filesize」のすぐ下にあります。

一度にアップロードできるファイル数の設定例

設定後は再びApacheを再起動し、もう一度phpinfo関数を実行して変更が反映されたか確認を行ってください。

以上、ファイルのアップロードに関する設定についてでした。

  • このエントリーをはてなブックマークに追加