PHPをインストールしたら最低限行なうPHPの初期設定と確認方法
PHPをインストールしたら、まず行っておきたたいPHPの初期設定についてまとめています。
PHPの設定方法について
PHPの設定方法と、特定の箇所での設定値の変更方法についてです。
php.iniの設定
PHPの設定を行なうには、設定ファイルである「php.iniファイル」を編集することで、設定を行なうことができます。
# vi /etc/php.ini
実行時の設定値の変更
ある特定の部分で、設定を変更したい場合には、処理をの実行時に設定を一部変更することもできます。
どのように PHP を実行しているかに係わらず、ini_set() 関数を 用いて、スクリプトの実行時に一部のオプションの設定値を変更することができます。
.htaccessでの設定
上記の他、php-fpmではなく、Apacheモジュールとして、PHPを実行している場合には、「.htaccessファイル」にディレクティブを設定して、設定を記述することで、設定を行なうこともできます。
php-fpmの設定ファイル
php-fpmの場合には、「/etc/php-fpm.conf」の設定ファイルや「/etc/php.fpm.d」のフォルダに「www.conf」等の設定ファイルがデフォルトで用意されており、必要に応じてこちらで設定します。
FPM では、php.ini 形式の構文の設定ファイル php-fpm.conf と、プール設定ファイルを使います。
PHPの初期設定
インストールしたら最低限やっておく初期設定についてです。
タイムゾーンの設定
php.iniを開いて、日付・時刻関連の関数等で使われるデフォルトのタイムゾーンになる、「[Date]」項目の「date.timezone」を設定します。
サポートされているタイムゾーンについては、サポートされるタイムゾーンのリストのページで案内されています。
全ての日付/時刻関数で使用されるデフォルトのタイムゾーン。 明示的に指定しなかったときにどのタイムゾーンを利用するのかについての優先順位は date_default_timezone_get() のページで解説されています。サポートしているタイムゾーンについては サポートされるタイムゾーンのリスト を参照ください。
日本であれば以下のように設定します。
# vi /etc/php.ini
date.timezone = Asia/Tokyo
mbstringの設定
日本語環境に対応するためのマルチバイト文字列の設定を行います。
php.iniの[mbstring]の項目を確認します。
デフォルトの言語を「Japanese」に設定します。
# vi /etc/php.ini
mbstring.language = Japanese
あとは、以前まで設定していた、「mbstring.internal_encoding」、「mbstring.http_input」、「mbstring.http_output」ですが、現在は、非推奨になっており、「default_charset」を設定するように案内されており、この項目は、デフォルトで、UTF-8が設定されているため、特に設定等する必要はないようです。
default_charset = "UTF-8"
この値は空のままにしておいて、代わりに default_charset を設定すべきです。
必要に応じてやっておくPHPの初期設定
必要に応じてやっておくと良いPHPの初期設定についてです。
セッションの有効期限の設定
セッションの有効期限は、セッションの有効期限を14日間に設定変更します。
session.gc_maxlifetime = 1209600
session.gc_maxlifetime は、データが 'ごみ' とみなされ、消去されるまでの秒数を指定します。 ガベージコレクション (ごみの収集) は、 セッションの開始時に行われます (session.gc_probability と session.gc_divisor に依存します)。 デフォルトは 1440 (24分) です。
セッション情報の保存先をmemcachedに設定
PHPでは、各拡張モジュールの独自のセッションハンドラを利用することで、セッション情報の保存先を変更することができます。
session.save_handler は、 セッションに関連するデータの保存および取得時に使用するハンドラを定義します。 デフォルトは、files です。各拡張モジュールで、 独自の save_handler を使用できることに注意しましょう。
ここでは、セッションの保存先を複数台でサーバプールを構成したmemcachedに変更します。PHPのmemcachedライブラリは、セッションのサポートも備えています。
Memcached は独自のセッションハンドラを用意しており、 これを使用するとユーザーセッションを memcache に格納することができます。
これにより、保存先がファイルからメモリになるので高速化が期待できるだけでなく、アプリケーションサーバとセッション情報の保存先の依存関係が疎結合になるため、アプリケーションサーバが複数台の構成の場合にも、セッション保存先を共有できるようになる利点があります。
php-fpmの場合は、「/etc/php.fpm.d/www.conf」にもセッションハンドラーを設定する項目がありますので、そこで設定します。
# vi /etc/php-fpm.d/www.conf
ここでは、セッションハンドラーをmemcachedにして、セッションデータは、memcachedサーバプールに保存されるように設定しています。
php_value[session.save_handler] = memcached
php_value[session.save_path] = 10.0.0.11:11211,10.0.0.12:11211,10.0.0.13:11211
OPcacheの設定
ファイルベースのキャッシュを有効にします。
ファイルベースのセカンドレベル opcode キャッシュを有効にし、そのディレクトリを設定します。 これは共有メモリ上の opcode キャッシュがいっぱいの時やサーバ再起動時、 もしくは共有メモリ上の opcode キャッシュをリセットした場合のパフォーマンスを向上させます。 デフォルトは "" で、これはファイルベースのキャッシュを無効にします。
「/etc/php.fpm.d/www.conf」の方に設定項目があるので、そこで設定します。
# vi /etc/php-fpm.d/www.conf
php_value[opcache.file_cache] = /var/lib/php/opcache
サーバの環境によって、OPcacheが利用するメモリ容量も設定(MB単位)します。
OPcache によって使用される共有メモリ・ストレージのサイズ。( MB 単位) 設定できる最小値は "8" です。これより小さい値を設定しても、最小値が強制されます。
ここでは揃えて、「/etc/php-fpm.d/www.conf」で設定します。
php_value[opcache.memory_consumption] = 1024
PHPの起動と制御
PHPの自動起動
php-fpmは、httpdと依存関係にあるため、httpdが起動する際に、自動的に起動されます。
# systemctl restart httpd
PHPの制御
PHPの設定変更等で、設定を反映させる場合等では、systemctlで再起動等の制御を行うことができます。
# systemctl restart php-fpm
PHPの現在の設定の確認方法
PHPの設定の反映を確認するには、phpinfo()関数を使って確認します。
現在の PHP の状態に関する、多くの情報を出力します。出力される情報には、 PHP コンパイルオプションと拡張機能、PHP のバージョン、 サーバー情報と環境(モジュールとしてコンパイルされた場合)、 PHP の環境、OS バージョン情報、パス、構成オプションのマスター およびローカルの値、HTTP ヘッダ、PHP License などがあります。
phpinfo()関数を実行するファイルを作成してブラウザでアクセスします。
# vi /var/www/html/info.php
<?php phpinfo(); ?>
表示された項目を確認することで、「Server API」でPHPの稼働方式の確認、「Loaded Configuration File」で読み込まれている設定ファイルの確認、「session」や「memcached」、「OPcache」の設定状態の確認等、PHPの状態に関する様々な情報を確認することができます。
2022年01月27日に投稿されました。
2022年10月11日に更新されました。