CentOS の PHP を 5.5 から 5.6 にバージョンアップしたときのメモです。導入にあたり実行したコマンドや php.ini の設定などを紹介します。OPcache と APCu もインストールしています。
動作確認環境
- CentOS 6.7
目次
- 更新前の PHP 5.5 は remi-php55 からインストール
- yum-plugin-priorities プラグインをインストール
- remi リポジトリの優先度を設定
- 更新予定のパッケージを確認
- PHP を 5.5 から 5.6 に更新
- php.ini を設定
- Zend OPcache の設定
- APCu の設定
- mbstring は設定不要になった
- 動作確認
更新前の PHP 5.5 は remi-php55 からインストール
更新前の PHP 5.5 は、remi-php55 リポジトリからインストールしています。5.5 のときの設定は以下の記事にまとめてあります。併せてどうぞ。
-
CentOSのPHPを5.4から5.5にアップデート。OPcacheとAPCuも設定
CentOS の PHP を 5.4 から 5.5 にバージョンアップしたときの記録です。APC の代替手段として OP ...
続きを見る
初期インストールの記事はこちら
-
お名前.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 の設定は 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 と同じです。
APCu の設定はモニタを見ながら調整します。
mbstring は設定不要になった
mbstring の設定はデフォルトのままです。
extension=mbstring.so
PHP5.5 までは mbstring の設定を細かく行うのが恒例でしたが、PHP5.6 からは、mbstring の設定がいくつか非推奨になりました。mbstring の設定をデフォルトのままにしておき、代わりに default_charset を設定することが推奨されています。
詳細はマニュアルを
動作確認
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