Help us understand the problem. What is going on with this article?

PHP 7.1 設定

More than 3 years have passed since last update.

はじめに

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
wreath
コンシューマ系のゲーム開発をメインに、社内サーバの構築やサーバプログラムの開発も行っています。 ここは自分の作業メモ的な感じで使っていく予定です。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away