CentosでPHPのバージョンアップ(例:5.3->5.6)を行う方法

カテゴリ アップデート コアバージョン 8.9.x 関連モジュール PHP

現在のPHPのバージョンを確認

$ php -v
PHP 5.3.3 (cli) (built: Mar 22 2017 12:27:09)

OSのバージョンを確認

$ cat /etc/redhat-release
CentOS release 6.7 (Final)

現在インストールされているライブラリを確認

$ rpm -aq | grep php
php-5.3.3-27.el6_5.1.x86_64
php-common-5.3.3-27.el6_5.1.x86_64
php-gd-5.3.3-27.el6_5.1.x86_64
php-pear-1.9.4-4.el6.noarch
php-devel-5.3.3-27.el6_5.1.x86_64
php-mbstring-5.3.3-27.el6_5.1.x86_64
php-pdo-5.3.3-27.el6_5.1.x86_64
php-mysql-5.3.3-27.el6_5.1.x86_64
php-cli-5.3.3-27.el6_5.1.x86_64
php-xml-5.3.3-27.el6_5.1.x86_64

epelリポジトリを追加

$ sudo yum install epel-release

CentOS系の remiリポジトリを追加

$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
  • Centos7なら remi-release-7.rpm

設定ファイルを保存

$ sudo cp /etc/php.ini /etc/php.ini.YYMMDD
$ sudo cp -pr /etc/php.d /etc/php.ini.d.YYMMDD
  • YYMMDDは実行日など

PHPのバージョンアップ

アップデートされるライブラリをチェック

$ sudo 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

上記「アップデートされるライブラリ」内容でOKなら その内容でアップデート

$ sudo 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

アップデートされる内容が不満、または うまくいかなかった場合、ライブラリを指定してアップデート

$ sudo yum update --enablerepo=remi,remi-php56 php php-common php-gd php-pear php-devel php-mbstring php-pdo php-mysql php-cli php-xml
  • php以降のライブラリは「現在インストールされているライブラリを確認」したライブラリを指定

そもそもアップデートがうまくゆかなかった場合、再インストールする

$ sudo yum remove php-* // アンインストール
$ sudo yum list installed | grep php // アンインストールされたことを確認
$ sudo yum install --enablerepo=remi,remi-php56 php php-common php-gd php-pear php-devel php-mbstring php-pdo php-mysql php-cli php-xml
  • php以降のライブラリは「現在インストールされているライブラリを確認」したライブラリを指定

設定確認 & 移行

$ sudo vimdiff /etc/php.ini /etc/php.ini.YYMMDD
$ sudo vimdiff /etc/php.d/〜.ini /etc/php.d.YYMMDD/〜.ini
  • vimdiff が無い場合は yum でインストールする。
  • PHP5.5 までは mbstring の設定を細かく行うのが恒例でしたが、PHP5.6 からは、mbstring の設定がいくつか非推奨になりました。mbstring の設定をデフォルトのままにしておき、代わりに php.ini で default_charset(drupalの場合 UTF-8) を設定することが推奨されています。

確認

$ php -v
PHP 5.6.23 (cli) (built: Jan  3 2018 13:11:40)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

OTHER FAQ

Drupal開発・運用の疑問/質問の答えはここに

無料ユーザー登録すると質問できます。

カテゴリ Core Ver. 関連モジュール タイトル昇順で並び替える
ユーザ 7.44 Password Policy 無効なユーザーを整理したい
CentOS 7.50 消せないファイルを消すには
Messages 7.34 Disable messages 標準(コア)が表示する特定のメッセージ非表示にしたい
コンテンツの管理 7.50 Administration menu 標準のユーザー管理ページ
コンテンツの管理 7.15 Views Bulk Operation 標準のコンテンツ編集/ユーザ一覧ページが物足りません
コンテンツの作成 7.34 ajax 標準のajaxフォーム(複数値:値の数=無制限)の制御l方法
ユーザ 7.38 user form 新規ユーザー登録時、パスワード再設定時のパスワード入力抜けを防ぎたい
ユーザの管理 7.27 PHP 新規ユーザーの追加ができない
コンテンツの作成 7.34 Entityreference prepopulate 新規ノード作成時のリファレンス方法
コンテンツの作成 8.4x node 新規ノードを作成する
フォーム 7.15 DefaultTextForNode 新しいページの作成方法を一から教えてください
コンテンツの管理 7.16 PHP 好きなところにノードを埋め込みたい
言語 6.x i18n 多言語対応サイトのサイト名やスローガン/ミッションなどを多言語化する方法を教えてください
言語 7.14 Entity Translation 各フィールドのラベルの多言語切り替え漏れ(接頭子、接尾子)
言語 7.15 Entity Translation 各フィールドのラベルの多言語切り替え漏れ(フィールド・ラベル)
フォーム 7.34 Webform 動的なフォーム(webform)
video 8.4x video map 動画上にクリッカブルマップを作成する方法
コンテンツの管理 8.9.x 写真の変更を行いたい
サイトの構築 7.38 deployment 冗長構成におけるアップロードおよび時間指定公開について
コンテンツの作成 7.26 Form Ajax 入力フォームで#ajax使用時、#default_valueを書き換えても反映しない

ページ