HOPES

PHPをインストールしたら最低限行なうPHPの初期設定と確認方法

PHPをインストールしたら最低限行なうPHPの初期設定と確認方法

PHPをインストールしたら、まず行っておきたたいPHPの初期設定についてまとめています。

PHPの設定方法について

PHPの設定方法と、特定の箇所での設定値の変更方法についてです。

php.iniの設定

PHPの設定を行なうには、設定ファイルである「php.iniファイル」を編集することで、設定を行なうことができます。

# vi /etc/php.ini

実行時の設定値の変更

ある特定の部分で、設定を変更したい場合には、処理をの実行時に設定を一部変更することもできます。

どのように PHP を実行しているかに係わらず、ini_set() 関数を 用いて、スクリプトの実行時に一部のオプションの設定値を変更することができます。

PHP: 設定を変更するには - Manual

.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: 設定 - Manual

PHPの初期設定

インストールしたら最低限やっておく初期設定についてです。

タイムゾーンの設定

php.iniを開いて、日付・時刻関連の関数等で使われるデフォルトのタイムゾーンになる、「[Date]」項目の「date.timezone」を設定します。
サポートされているタイムゾーンについては、サポートされるタイムゾーンのリストのページで案内されています。

全ての日付/時刻関数で使用されるデフォルトのタイムゾーン。 明示的に指定しなかったときにどのタイムゾーンを利用するのかについての優先順位は date_default_timezone_get() のページで解説されています。サポートしているタイムゾーンについては サポートされるタイムゾーンのリスト を参照ください。

PHP: 実行時設定 - Manual

日本であれば以下のように設定します。

# 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: 実行時設定 - Manual

必要に応じてやっておくPHPの初期設定

必要に応じてやっておくと良いPHPの初期設定についてです。

セッションの有効期限の設定

セッションの有効期限は、セッションの有効期限を14日間に設定変更します。

session.gc_maxlifetime = 1209600

session.gc_maxlifetime は、データが 'ごみ' とみなされ、消去されるまでの秒数を指定します。 ガベージコレクション (ごみの収集) は、 セッションの開始時に行われます (session.gc_probability と session.gc_divisor に依存します)。 デフォルトは 1440 (24分) です。

PHP: 実行時設定 - Manual

セッション情報の保存先をmemcachedに設定

PHPでは、各拡張モジュールの独自のセッションハンドラを利用することで、セッション情報の保存先を変更することができます。

session.save_handler は、 セッションに関連するデータの保存および取得時に使用するハンドラを定義します。 デフォルトは、files です。各拡張モジュールで、 独自の save_handler を使用できることに注意しましょう。

PHP: 実行時設定 - Manual

ここでは、セッションの保存先を複数台でサーバプールを構成したmemcachedに変更します。PHPのmemcachedライブラリは、セッションのサポートも備えています。

Memcached は独自のセッションハンドラを用意しており、 これを使用するとユーザーセッションを memcache に格納することができます。

PHP: セッションのサポート - Manual

これにより、保存先がファイルからメモリになるので高速化が期待できるだけでなく、アプリケーションサーバとセッション情報の保存先の依存関係が疎結合になるため、アプリケーションサーバが複数台の構成の場合にも、セッション保存先を共有できるようになる利点があります。

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 キャッシュをリセットした場合のパフォーマンスを向上させます。 デフォルトは "" で、これはファイルベースのキャッシュを無効にします。

PHP: 実行時設定 - Manual

「/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" です。これより小さい値を設定しても、最小値が強制されます。

PHP: 実行時設定 - Manual

ここでは揃えて、「/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 などがあります。

PHP: phpinfo - Manual

phpinfo()関数を実行するファイルを作成してブラウザでアクセスします。

# vi /var/www/html/info.php
<?php phpinfo(); ?>
phpinfoの情報

表示された項目を確認することで、「Server API」でPHPの稼働方式の確認、「Loaded Configuration File」で読み込まれている設定ファイルの確認、「session」や「memcached」、「OPcache」の設定状態の確認等、PHPの状態に関する様々な情報を確認することができます。

2022年01月27日に投稿されました。

2022年10月11日に更新されました。