PHP の設定のスニペット集 (php.ini, .htaccess, ini_set())
このページは、PHP の設定 (php.ini, .htaccess, ini_set()) のスニペットと、関連する設定の説明をまとめる予定のページです。
目次
注意
- コードのライセンスは CC0 (クレジット表示不要、改変可、商用可) です。
(参考) 「変更可能」について
各設定は下記のような区分があり、どの設定ファイルで変更できるかが決まっています。
区分 | php.ini | httpd.conf | .htaccess | .user_ini | ini_set() |
---|---|---|---|---|---|
PHP_INI_ALL | ○ | ○ | ○ | ○ | ○ |
PHP_INI_USER | ×? | ×? | ×? | ○ | ○ |
PHP_INI_PERDIR | ○ | ○ | ○ | ○ | × |
PHP_INI_SYSTEM | ○ | ○ | × | × | × |
スニペット
文字コード設定を UTF-8 にする
項目 | 概要 | 変更可能 |
---|---|---|
default_charset | htmlspecialchars(), iconv, mbstring, Content-Type 等に使用されるデフォルト文字コードです。 | PHP_INI_ALL |
mbstring.language | mb_send_mail() の件名や本文のエンコーディング設定に使用されます。基本的には neutral か Japanese かどちらか。※1 | PHP_INI_ALL |
mbstring.internal_encoding | mb_convert_encoding() など、mbstring の各関数を使う時のデフォルト文字コードです。設定されていない場合は default_charset が使用されるので設定しなくてもよいですが、古いバージョンの PHP では 設定しておいたほうがよいかもしれません。 | PHP_INI_ALL |
mbstring.encoding_translation | 文字コード変換をする・しない。しないほうが問題が少ないです。 | PHP_INI_PERDIR |
mbstring.http_input | HTTP の入力文字 (GET や POST パラメータ)。設定しないほうが問題が少ないです。 | PHP_INI_ALL |
mbstring.http_output | HTTP の出力文字を空にする。設定しないほうが問題が少ないです。 | PHP_INI_ALL |
※1 mbstring.language の値の一覧は PHP: mb_language - Manual に記載されています。
アップロードファイルサイズ、アップロード数の上限設定
※ PHP スクリプト内では設定不可
項目 | 概要 | 変更可能 |
---|---|---|
memory_limit | 実行するプログラムの使用メモリの上限 | PHP_INI_PERDIR |
post_max_size | POST データサイズの上限 | PHP_INI_PERDIR |
upload_max_filesize | アップロードファイルサイズの上限 | PHP_INI_PERDIR |
max_file_uploads | 同時にアップロードできるファイルの最大数 | PHP_INI_PERDIR |
- 設定の値が
memory_limit
>=post_max_size
>=upload_max_filesize
の関係になるようにしておく必要があります。
(例えばmemory_limit
= 1M,post_max_size
とupload_max_filesize
= 128M だとmemory_limit
で 1M しかメモリを確保しない形になるのでpost_max_size
,upload_max_filesize
が 128M でも 1M 相当しかサイズを確保できません) - サイズの値は K (キロバイト), M (メガバイト), G (ギガバイト) が単位として使用できます。(512K, 128M, 2G など)
PHP のタイムアウト時間を変更する
項目 | 概要 | 変更可能 |
---|---|---|
max_execution_time | PHPのプログラムがタイムアウトになる (= 強制終了される) までの時間 (秒数) | PHP_INI_ALL |
セッションの有効期限などを変更する
項目 | 概要 | 変更可能 |
---|---|---|
session.save_path | セッションファイルの保存場所のパス。 | PHP_INI_ALL |
session.cookie_lifetime | セッションクッキーの有効期限 (秒)。0だとブラウザを閉じるまでです。 | PHP_INI_ALL |
session.cookie_path | セッションクッキーが有効になるパス (URL上のパス)。 基本は "/" で問題ないですが、フォルダごとに別システムを動かしていてセッションデータが混ざると問題がある場合は変更したほうがいいです |
PHP_INI_ALL |
session.cookie_domain | セッションクッキーが有効になるドメイン。 | PHP_INI_ALL |
session.cookie_secure | セキュアな接続 (HTTPS) のみクッキーを送信するか。 常時 HTTPS であれば 1 のほうがよいです。(そうでない場合は 0) |
PHP_INI_ALL |
session.cookie_httponly | HTTP(S) 経由でのみ Cookie にアクセスできるようにするか。 基本的に 1 (有効) でよいです |
PHP_INI_ALL |
session.gc_maxlifetime | セッションファイルが保存場所 (session.save_path) から消去されるまでの秒数。 | PHP_INI_ALL |
セッションの有効期限を伸ばしたい時は、特に下記の変更をするとよいです。
session.save_path
を変更session.cookie_lifetime
とsession.gc_maxlifetime
を同じ時間にする
session.cookie_lifetime
のみ変更すると、下記のような問題が起こることがあります。
- レンタルサーバーなどの共有スペースだと保存場所が他のサーバーユーザーと被っていることが多く、
session.save_path
を変更していないと他のサーバーユーザーの設定の影響でセッションファイルが意図せず消されてしまう session.gc_maxlifetime
をsession.cookie_lifetime
以上の秒数にしていないと Cookie は残っていてもサーバー上のセッションファイルが先に消されてしまう
エラーを画面に出力する
項目 | 概要 | 変更可能 |
---|---|---|
display_errors | エラーを画面に出力するか | PHP_INI_ALL |
error_reporting | エラー出力の種類。-1 はすべてのエラーを出力します |
PHP_INI_ALL |
error_reporting(-1)
はini_set('error_reporting', -1)
でもよいです。
エラーをログに出力する
項目 | 概要 | 変更可能 |
---|---|---|
log_errors | エラーをログに出力するか | PHP_INI_ALL |
error_log | エラーログのファイルパス | PHP_INI_ALL |