サーバ設定によりますが、PHP のデフォルトではアップロードできるファイルサイズの容量は2MBになっていることが多いです。
この設定を変更するにはサーバ内のphp.iniの書き換えが必要ですが、root権限が必要だったり、初心者だと直接そのあたりを書き換えるのが非常に恐ろしかったりします。
そこで、ドキュメントルートやサーバごとに指定された場所に自分で作った.htaccessファイルやphp.iniファイルを置き、サーバデフォルトの設定を上書きする、というケースがあります。
内容は、いろいろなブログで数多くの人が書いてくれています。
今から書くことに特に目新しいことはありませんが、.htaccessにする場合とphp.iniにする場合とで書き方が微妙に違うのでそれを併記しておきます。
まぁ、恒例の覚え書きですね。私は、この書き方の違いに気づいてなくて、何度やっても失敗して諦めたという過去がありますので^^;
.htaccessに書く場合
PHPよくわかってない人だと、こっちの方がなじみあるかな?
#メモリ使用量の制限
php_value memory_limit 20M
#POSTデータに許可される最大サイズ
php_value post_max_size 20M
#1つのファイルアップロードに許可される最大サイズ
php_value upload_max_filesize 20M
記載順は変えずにこの通りにしとくのがよろしいかと。
というのも、
memory_limit > post_max_size > upload_max_filesize
というサイズ関係にしないといけないからです。難しければ全部同じ数字にしておくといいのかな。
php.iniに書く場合
やってることは一緒ですが、サーバの仕様によっては.htaccessでのアップロードサイズ変更ができないこともあります。
;メモリ使用量の制限
memory_limit = 20M
;POSTデータに許可される最大サイズ
post_max_size = 20M
;1つのファイルアップロードに許可される最大サイズ
upload_max_filesize = 20M
コメントアウトの仕方が違う(文頭にセミコロン)のと、’php_value ‘っていう記載は不要です。
ちなみに注意事項
- .htaccessを置く場合は、置いた場所以下の階層に適用されることになります。置き場所は自分でよく考えて!
- php.iniを置く場合は、「どこに置いたらいいか」がサーバごとに決まっています。
「ユーザーのホームディレクトリ」である場合が多いようですが、「どこがホームディレクトリなのか」っていうのを勘違いしてたりすることもあるのでサーバごとに要確認! - サーバの仕様によっては、どんな方法でもアップロード制限の変更そのものを許可していない場合があるので、その場合は諦めるか、もう少し予算を出して変更可能なプランのサーバにしましょう。
- この通りにやってもうまくいかない場合は、.htaccess、php.iniともに、保存時の文字コードをUTF-8N(BOMなし)にしてみましょう。
- 当然サーバの負荷が上がるので、必要以上に大きな数字を指定しないようにしましょう。
特に共用サーバの場合は他の人の迷惑になる可能性もありますから。。。
さらに補足事項
頼れるせんぱいより、
@mypacecreator 補足。20M位ならいいけど、かなり大きなデータをアップするときに、実行時間制限にかかる場合があるので、そのときは、 max_input_time と max_execution_time の設定を見ておくべし。
— きよっち | ウィリアム1世 (@kiyotchi) December 4, 2010
だ、そうです!
WordPressのブログぐらいならそこまで大きなデータをUPしたり負荷のかかる処理は少ないだろうけど、
もっとがっつりした動作が必要な時はこちらも合わせてcheck!!