CentOSのPHPを5.5から5.6にアップデート。OPcacheなども設定

2015年12月21日

CentOS PHP5.5 から 5.6 アップデート

CentOS の PHP を 5.5 から 5.6 にバージョンアップしたときのメモです。導入にあたり実行したコマンドや php.ini の設定などを紹介します。OPcache と APCu もインストールしています。

動作確認環境

  • CentOS 6.7

目次

  1. 更新前の PHP 5.5 は remi-php55 からインストール
  2. yum-plugin-priorities プラグインをインストール
  3. remi リポジトリの優先度を設定
  4. 更新予定のパッケージを確認
  5. PHP を 5.5 から 5.6 に更新
  6. php.ini を設定
  7. Zend OPcache の設定
  8. APCu の設定
  9. mbstring は設定不要になった
  10. 動作確認

更新前の PHP 5.5 は remi-php55 からインストール

更新前の PHP 5.5 は、remi-php55 リポジトリからインストールしています。5.5 のときの設定は以下の記事にまとめてあります。併せてどうぞ。

PHP
CentOSのPHPを5.4から5.5にアップデート。OPcacheとAPCuも設定

CentOS の PHP を 5.4 から 5.5 にバージョンアップしたときの記録です。APC の代替手段として OP ...

続きを見る

初期インストールの記事はこちら

WordPress
お名前.com VPS にPHPをインストールし、APC、memcachedなど設定する

お名前.com VPS メモリ2G プランに Nginx で WordPress を構築するメモ、第7回目。前回はMyS ...

続きを見る

yum-plugin-priorities プラグインをインストール

PHP 5.5 から 5.6 に上げるときに、なぜか 5.5 リポジトリのほうが優先されてしまってアップグレードできなかったので yum-plugin-priorities をインストールします。

$ yum -y install yum-plugin-priorities

remi リポジトリの優先度を設定

remi リポジトリには、PHP 5.6 を扱うためのリポジトリ remi-php56 が追加されています。/etc/yum.repos.d/remi.repo を編集して priority を追記します。

remi.repo

...
...
[remi]
name=Remi's RPM repository for Enterprise Linux 6 - $basearch #baseurl=http://rpms.remirepo.net/enterprise/6/remi/$basearch/ mirrorlist=http://rpms.remirepo.net/enterprise/6/remi/mirror enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi priority=1 ... ... ...
name=Remi's RPM repository for Enterprise Linux 6 - $basearch #baseurl=http://rpms.remirepo.net/enterprise/6/remi/$basearch/ mirrorlist=http://rpms.remirepo.net/enterprise/6/remi/mirror enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi priority=1 ... ... ...
[remi-php56]
name=Remi's PHP 5.6 RPM repository for Enterprise Linux 6 - $basearch #baseurl=http://rpms.remirepo.net/enterprise/6/php56/$basearch/ mirrorlist=http://rpms.remirepo.net/enterprise/6/php56/mirror # WARNING: If you enable this repository, you must also enable "remi" enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi priority=1 ... ... 

[remi-php56]

remi-php56 が見つからない場合は、yum update remi-release して remi リポジトリを更新してみてください。同じディレクトリに remi.repo.rpmnew というファイルができているはずなので、差分を remi.repo にマージしましょう。

更新予定のパッケージを確認

remi.repo の設定が終わったら、yum check-update を実行してみます。PHP 5.6 が更新対象として表示されます。

# yum check-update --enablerepo=remi-php56,remi

php.x86_64                   5.6.16-1.el6.remi        remi-php56
php-cli.x86_64               5.6.16-1.el6.remi        remi-php56
php-common.x86_64            5.6.16-1.el6.remi        remi-php56
php-fpm.x86_64               5.6.16-1.el6.remi        remi-php56
php-intl.x86_64              5.6.16-1.el6.remi        remi-php56
php-mbstring.x86_64          5.6.16-1.el6.remi        remi-php56
php-mysqlnd.x86_64           5.6.16-1.el6.remi        remi-php56
php-opcache.x86_64           5.6.16-1.el6.remi        remi-php56
php-pdo.x86_64               5.6.16-1.el6.remi        remi-php56
php-pecl-apcu.x86_64         4.0.10-1.el6.remi.5.6    remi-php56
php-pecl-igbinary.x86_64     1.2.1-1.el6.remi.5.6     remi-php56
php-pecl-jsonc.x86_64        1.3.9-1.el6.remi.5.6     remi-php56
php-pecl-memcached.x86_64    2.2.0-3.el6.remi.5.6     remi-php56
php-pecl-msgpack.x86_64      0.5.7-1.el6.remi.5.6     remi-php56
php-pecl-zip.x86_64          1.13.1-1.el6.remi.5.6    remi-php56
php-process.x86_64           5.6.16-1.el6.remi        remi-php56
php-xml.x86_64               5.6.16-1.el6.remi        remi-php56

PHP を 5.5 から 5.6 に更新

yum update で PHP 5.5 から PHP 5.6 に更新します。

# yum update php --enablerepo=remi-php56,remi

更新:
 php                   x86_64    5.6.16-1.el6.remi        remi-php56    2.7 M
依存性関連での更新をします。:
 php-cli               x86_64    5.6.16-1.el6.remi        remi-php56    3.9 M
 php-common            x86_64    5.6.16-1.el6.remi        remi-php56    1.1 M
 php-fpm               x86_64    5.6.16-1.el6.remi        remi-php56    1.3 M
 php-intl              x86_64    5.6.16-1.el6.remi        remi-php56    206 k
 php-mbstring          x86_64    5.6.16-1.el6.remi        remi-php56    965 k
 php-mysqlnd           x86_64    5.6.16-1.el6.remi        remi-php56    273 k
 php-opcache           x86_64    5.6.16-1.el6.remi        remi-php56    121 k
 php-pdo               x86_64    5.6.16-1.el6.remi        remi-php56    116 k
 php-pecl-apcu         x86_64    4.0.10-1.el6.remi.5.6    remi-php56     80 k
 php-pecl-igbinary     x86_64    1.2.1-1.el6.remi.5.6     remi-php56     38 k
 php-pecl-jsonc        x86_64    1.3.9-1.el6.remi.5.6     remi-php56     50 k
 php-pecl-memcached    x86_64    2.2.0-3.el6.remi.5.6     remi-php56    101 k
 php-pecl-msgpack      x86_64    0.5.7-1.el6.remi.5.6     remi-php56     54 k
 php-pecl-zip          x86_64    1.13.1-1.el6.remi.5.6    remi-php56     52 k
 php-process           x86_64    5.6.16-1.el6.remi        remi-php56     60 k
 php-xml               x86_64    5.6.16-1.el6.remi        remi-php56    213 k
アップグレード      17 パッケージ
総ダウンロード容量: 11 M

更新すると何件か warning が出てきました。PHP 5.6 用の config ファイルが退避されたようです。diff をとって必要があれば merge しましょう。

warning: /etc/php.ini created as /etc/php.ini.rpmnew
warning: /etc/httpd/conf.d/php.conf created as /etc/httpd/conf.d/php.conf.rpmnew
warning: /etc/php-fpm.d/www.conf created as /etc/php-fpm.d/www.conf.rpmnew
warning: /etc/php.d/mbstring.ini saved as /etc/php.d/mbstring.ini.rpmsave

php.ini.rpmnew 等のファイルは、PHP 5.6 のデフォルト php.ini です。削除せずに、php.ini.org 等の名前にして保存しておくことをおすすめします。設定をデフォルトに戻したい時に役立ちます。

php.ini を設定

php.ini のデフォルトからの変更点です。

expose_php = Off
max_execution_time = 120
error_reporting = E_ALL & ~E_STRICT
date.timezone = Asia/Tokyo
error_log = /var/log/php.log
session.cookie_secure = 1
session.cookie_httponly = 1
session.hash_function = 1

Zend OPcache の設定

Zend OPcache の設定です。オペコードキャッシュとは、コンパイル後のコードをメモリに保存してパフォーマンスを向上させる仕組みです。
インストールは以下コマンドで。

# yum install php-opcache --enablerepo=remi-php56,remi

設定サンプルです。

[opcache]
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1

設定の詳細、デフォルト値はマニュアルをご確認ください。

OPcache 実行時設定 - PHP Manual

Opcache の設定は opcache-status を見ながら調整すると良いです。

rlerdorf/opcache-status - GitHub

APCu の設定

APC ユーザーキャッシュを利用します。ユーザーキャッシュとは、オブジェクトや変数をメモリに保存して、別のリクエストから再利用する仕組みです。
インストールは以下コマンドで。

# yum install php-pecl-apcu --enablerepo=remi-php56,remi

設定はデフォルトのままです。

apc.enabled=1
apc.enable_cli=0
apc.shm_size=32M
apc.ttl=3600
apc.gc_ttl=3600
apc.mmap_file_mask=/tmp/apc.XXXXXX

設定の詳細、デフォルト値はマニュアルをご確認ください。APCu のインターフェースは APC と同じです。

APC User Cache - PHP Manual

APCu の設定はモニタを見ながら調整します。

krakjoe/apcu - GitHub

mbstring は設定不要になった

mbstring の設定はデフォルトのままです。

extension=mbstring.so

PHP5.5 までは mbstring の設定を細かく行うのが恒例でしたが、PHP5.6 からは、mbstring の設定がいくつか非推奨になりました。mbstring の設定をデフォルトのままにしておき、代わりに default_charset を設定することが推奨されています。
詳細はマニュアルを

mbstring 実行時設定 - PHP Manual

動作確認

php -v コマンドや、phpinfo を確認します。

# php -v

PHP 5.6.16 (cli) (built: Nov 26 2015 08:01:30)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies

-技術ブログ
-