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. 関連モジュール タイトル降順で並び替える
Proxy 7.59 Proxy Apache settings.php リバースプロキシ(Apache)+バックグランドWeb(Drupal 7 )でログインセッションを維持する方法
テーマ 7.56 field レンダリング配列内に「ラベル非表示」を指定する方法
ユーザ 7.34 ip_ranges ログインアタック対策は?
コンテンツの管理 7.15 Pagenation 一つの長いページをBookなどのように連続して読ませることはできますか?
コンテンツの作成 7.38 node 代理投稿を可能にしたい
ユーザ 7.44 Quickbar 会員の種別(役割)別にメニューを設けたい
ブロック 7.23 伸縮するfieldsetブロックを追加したい
コンテンツの作成 7.26 Form Ajax 入力フォームで#ajax使用時、#default_valueを書き換えても反映しない
サイトの構築 7.38 deployment 冗長構成におけるアップロードおよび時間指定公開について
コンテンツの管理 8.9.x 写真の変更を行いたい
video 8.4x video map 動画上にクリッカブルマップを作成する方法
フォーム 7.34 Webform 動的なフォーム(webform)
言語 7.15 Entity Translation 各フィールドのラベルの多言語切り替え漏れ(フィールド・ラベル)
言語 7.14 Entity Translation 各フィールドのラベルの多言語切り替え漏れ(接頭子、接尾子)
言語 6.x i18n 多言語対応サイトのサイト名やスローガン/ミッションなどを多言語化する方法を教えてください
コンテンツの管理 7.16 PHP 好きなところにノードを埋め込みたい
フォーム 7.15 DefaultTextForNode 新しいページの作成方法を一から教えてください
コンテンツの作成 8.4x node 新規ノードを作成する
コンテンツの作成 7.34 Entityreference prepopulate 新規ノード作成時のリファレンス方法
ユーザの管理 7.27 PHP 新規ユーザーの追加ができない

ページ