日本語環境php.ini設定(CentOS7)
提供:あわ自由帳
メインページ > CentOS 7 で自宅サーバー構築 > 日本語環境php.ini設定(CentOS7)
日本語環境でPHPを利用する場合に推奨するphp.ini設定です。
UTF-8環境
[root@host4 ~]# vi /etc/php.ini
- ダイナミックコンテンツの文字コードセットは必ず指定しなければならない。(セキュリティ上の理由)
default_charset = UTF-8
- 言語環境を日本語に設定。mb_send_mail関数などの動作に影響する。
mbstring.language = japanese
- ブラウザから送信される文字エンコーディングはcharsetと同じはず。プログラム側では必ず送信された文字エンコーディングが正当なUTF-8エンコーディングであるか確認する事。
mbstring.internal_encoding = UTF-8
- 現在のブラウザでHTMLを記述した文字エンコーディング以外で文字を送信してくるようなブラウザはない。(携帯などモバイル環境を除く)
mbstring.encoding_translation On
PHPでファイルのアップロード設定
アップロードできない場合
PHPでファイルがアップロードできない場合は、まずphp.iniの下記の設定を疑います。
ディレクティブ名 | 説明 |
---|---|
memory_limit | スクリプトが確保できる最大メモリ |
post_max_size | POSTデータに許可される最大サイズ |
upload_max_filesize | アップロードされるファイルの最大サイズ |
- アップロードしたいファイルサイズがupload_max_filesizeを超えていたら、それはもうアップロードできません。
- 上記3つの項目が下記のような関係になるように設定しなければいけません。
memory_limit >= post_max_size >= upload_max_filesize
設定例
サーバーの搭載メモリーなど環境に応じて変えてください。
※自宅サーバー(メモリ:6GB)、Apacheのhttpd.confのMaxClients設定値は100の設定例
[root@host4 ~]# vi /etc/php.ini memory_limit = 128M post_max_size = 16M upload_max_filesize = 16M
PHPが使用する最大メモリ量の計算
PHPが使用する最大メモリ量は以下の式で簡単に推計することが出来ます。
memory_limitの値 x httpd.confのMaxClientsの値 = メモリ最大使用量
memory_limitが32M, httpd.conf中のMaxClientsが100として計算すると、メモリ最大使用量は3.2GBとなります。以下が式です。
32MB x 100 = 1600 ≒ 3.2GB
kernelや他のサブシステム(PHP以外のapache module, SMTPサーバやOpenSSHサーバなど)も同様にメモリを使用するので、サーバには最低でも5GB程度の物理メモリを搭載する必要があるでしょう。
スクリプト実行時間を制限する
スクリプト実行時間を制限するのが、設定項目「max_execution_time」です。ミスなどによって処理が終了せずに延々と続いてしまうことを防ぐために使います。
[root@host4 ~]# vi /etc/php.ini max_execution_time = 30
初期設定値は30秒です。特別な事情がない限り、この設定値が妥当だと考えます。そして、制限をなくすには「0」と設定します。
PHPを使っているという事実を隠す
PHPは、初期設定のままではそのバージョン番号をHTTPのヘッダ情報に入れるようになっています。攻撃者から見ると、PHPのバージョンが攻撃の手掛かりになることもあります。従って、バージョン番号は公開しない方がよいでしょう。
[root@host4 ~]# curl -I http://sudachi.jp/phpinfo.php HTTP/1.1 200 OK Date: Fri, 08 Nov 2013 21:08:11 GMT Server: Apache X-Powered-By: PHP/5.3.3 Vary: Accept-Encoding,User-Agent Connection: close Content-Type: text/html; charset=UTF-8
これを隠すには設定項目「expose_php」の値を「Off」にします。
[root@host4 ~]# vi /etc/php.ini expose_php = On ↓ expose_php = Off [root@host4 ~]# systemctl restart httpd ← httpd再起動
結果確認
[root@host4 ~]# curl -I http://sudachi.jp/phpinfo.php HTTP/1.1 200 OK Date: Fri, 08 Nov 2013 21:11:15 GMT Server: Apache Vary: Accept-Encoding,User-Agent Connection: close Content-Type: text/html; charset=UTF-8