はじめに
CentOS 7 minimal インストール ~ LAMP 構築まで
こちらは上の記事の続きとなります。
php.ini 設定
設定ファイルを編集します。
[root@localhost ~]# vim /etc/php.ini
以降各セクションごとに解説していきます。
[PHP] セクション
expose_php
レスポンスヘッダに含まれる PHP バージョン情報の表示を制御します。
セキュリティ上の理由から Off が良いでしょう。
;expose_php = On
expose_php = Off
max_execution_time
PHP スクリプトのタイムアウト時間です。
スクリプトの実行時間が上記秒数を超えるとエラーとなるので、長時間実行する必要がある場合は変更して下さい。
なお Apache 側にも Timeout ディレクティブがあるのでそちらも変更する必要があります。(デフォルト 60 秒)
0 を指定すると無制限になります。
max_execution_time = 30
max_input_time
PHP が GET, POST リクエストを解析する際のタイムアウト時間です。
例えばファイルをアップロードしようとした場合、アップロードに 60 秒以上かかるとエラーになります。
-1 を指定すると無制限になります。
max_input_time = 60
memory_limit
PHP が使用できるメモリの最大数を定義します。
ファイルアップロードを行う場合、アップロードする最大サイズ post_max_size より大きな値を指定するのが良いでしょう。
小さい値を指定しても動きますがメモリ効率が悪くなるかもしれません。
memory_limit = 128M
error_reporting
表示するエラー種別を設定します。
開発環境では全てのエラーを表示する E_ALL を推奨します。
;error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
error_reporting = E_ALL
display_errors / display_startup_errors
エラー表示を制御します。
display_errors は実行中に発生したエラーを、display_startup_erros は実行前に発生したエラーの表示を制御します。
開発環境では On にしておいたほうがデバッグが楽になります。
;display_errors = Off
display_errors = On
#display_startup_errors = Off
display_startup_errors = On
error_reporting
エラーログの保存ファイル名を指定します。
指定が無い場合は Apache のエラーログ(/var/log/httpd/error_log)に記録されます。
ディレクトリは自動で作成されないのであらかじめ作成しておく必要があります。
;error_log = php_errors.log
error_log = /var/log/php/error.log
post_max_size
POST リクエストで送信できるサイズの上限です。
ファイルアップロードを行う場合はこの値以下までしかアップロード出来ません。
memory_limit も参照して下さい。
post_max_size = 8M
default_charset
htmlspecialchars() 等で encoding パラメータを省略した場合この値が使用されます。
また mbstring.internal_encoding が未設定の場合もこの値が使用されます。
更に Content-Type ヘッダにここで指定された値が強制的に設定されます。
Meta タグが効かなくなってしまうので、UTF-8 以外を利用したい場合は header() で Content-Type を正しく指定する必要があります。
default_charset = "UTF-8"
file_uploads / upload_tmp_dir
ファイルアップロードを有効化するかどうかです。
upload_tmp_dir はファイルがアップロードされるディレクトリを指定します。
未指定もしくは PHP 実行ユーザーが書き込めない場所の場合はシステムのデフォルト /tmp に書き込まれます。
file_uploads = On
;upload_tmp_dir =
upload_max_filesize
アップロード出来るファイルの最大サイズを指定します。
post_max_size より小さな値でなければいけません。
upload_max_filesize = 2M
[Date] セクション
date.timezone
タイムゾーン設定が無いと実行時に Warning が発生するので必須設定です。
;date.timezone =
date.timezone = Asia/Tokyo
[mail function] セクション
mail.add_x_header
メールヘッダに X-PHP-Originating-Script が追加されるのを無効にします。
このヘッダにはファイル名が記述されてしまうためセキュリティ上無効にしたほうが良いでしょう。
#mail.add_x_header = On
mail.add_x_header = Off
mail.log
mail() 実行ログを記録するファイルを指定します。
;mail.log =
mail.log = /var/log/php/mail.log
[Session] セクション
session.save_path
セッションファイルの保存先を設定します。
未指定の場合は /tmp となります。
;session.save_path = "/tmp"
session.save_path = "/var/lib/php/session"
もし複数のアプリケーションを設置する場合、アプリケーションごとに save_path を変更するべきです。
そうしないとセッションの自動削除(ガーベージコレクション)が他のアプリの設定に影響されてしまうためです。
ガーベージコレクションの詳しい動作は下記のサイトを参照して下さい。
PHPプロ!TIPS+ セッションのガーベッジコレクションをテストする
追加モジュール
PEAR
PHP ライブラリ PEAR をインストールします。
[root@localhost ~]# yum install --enablerepo=remi,remi-php71 php-pear
MySQLi
MySQL 改良版拡張モジュールをインストールします。
[root@localhost ~]# yum install --enablerepo=remi,remi-php71 php-mysqli
mbstring
日本語処理に必要となる mbstring をインストールします。
[root@localhost ~]# yum install --enablerepo=remi,remi-php71 php-mbstring
インストールが完了したら php.ini の [mbstring] セクションを編集します。
;mbstring.language = Japanese
mbstring.language = Japanese
;mbstring.detect_order = auto
mbstring.detect_order = auto
bcmath
高精度演算で必要になる bcmath をインストールします。
[root@localhost ~]# yum install --enablerepo=remi,remi-php71 php-bcmath
厳密な小数計算を行う場合に利用出来ます。
詳しくは下記サイトをご確認下さい。
PHPの演算誤差
Memcached
Memcached モジュールをインストールします。
[root@localhost ~]# yum install --enablerepo=remi,remi-php71 php-pecl-memcached
以下のコードで動作確認出来ます。
success! と表示されれば OK です。
<?php
$m = new Memcached();
$m->addServer('localhost', 11211);
$m->set('test', 'success!');
echo $m->get('test') ?: 'failed';
$m->delete('test');
LDAP
LDAP モジュールをインストールします。
[root@localhost ~]# yum install --enablerepo=remi,remi-php71 php-ldap
GD
画像処理モジュールをインストールします。
[root@localhost ~]# yum install --enablerepo=remi,remi-php71 php-gd