ファイルアップロードの上限

2007/01/04 | apache

PHPでファイルをアップロードする場合は、いくつか設定で気をつけておくべき箇所がある。それは以下の4つの設定だ。

file_uploads(PHPでファイルアップロードできるようにするかどうか)
memory_limit(PHPが使用することのできるメモリの上限)
post_max_size(PHPがpostによって受け取ることのできる容量の上限)
upload_max_filesize(PHPが処理できるアップロードファイルの上限)

まずファイルのアップロードがまったくできない場合は1つ目のfile_uploadsが正しく設定されているかどうかチェック。Offとかだともちろんアップロードできない。
次にファイルサイズが大きいとアップできない場合は残りの3つの設定をチェックする。上記の設定はそれぞれ以下の関係を守る必要がある。

memory_limit > post_max_size > upload_max_filesize

しかし、これらを正しく設定してもまだアップロードができない場合がある。それはapacheの設定だ。apacheの設定で以下のようなディレクティブがある。

LimitRequestBody

ここでアップロードで使用できる(純粋にはファイルだけではないが)ファイルの容量の上限が記述されていることがある。もちろんPHPでいくら設定しても、apacheではじかれてしまっては元も子もない。
この設定もチェックしよう。

なおそれぞれのチェックはphp.iniやhttpd.confを見ればだいたいいいのだが、PHPの場合は/etc/php.d/の中のファイル、/etc/httpd/conf.d/の中のファイルなどもチェックしておく必要がある可能性がある(設定ファイルを分散して設置することができるから)。
ファイル名やファイルへのパスは各自の環境に合わせる必要があることは言うまでもない。

SSL設定項目

2006/08/22 | apache

最近はサーバ設定とかから離れつつあり、設定方法を忘れつつあるのでメモ。
apache+mod_sslの設定箇所をメモしておく。


SSLCertificateKeyFile (サーバで作成した暗号化キーを指定)
SSLCertificateFile (証明書発行機関で署名してもらった証明書を指定)
SSLPassPhraseDialog exec:/etc/httpd/conf/sslpasswd.sh

通常の手順でSSLを導入すると、暗号化キー作成の際に使用したパスワードをapache起動のたびに聞かれることになる。これを回避するための設定が3行目。/etc/httpd/conf/sslpasswd.shに以下のように記述したファイルを設置し、実行権限を与えておくことでパスワードを自動で読み込んでくれるようになる。


#!/bin/sh
echo “(パスワード)”

最低限これだけ設定しておけばよい。あとはServerNameとか適宜設定する。


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