PHP 5.6 から 7.0 への移行

本記事は最終更新日より 1 年以上経過しております。
スポンサーリンク

 WordPress が 4.4 にアップデートされた事を機に、PHP 7.0 で動作するかなーと検証してみたら Warning すら吐かずに動作するように出来たので PHP 7.0 への移行をした。
 専ら、WordPress と OwnCloud さえまともに動いてくれて尚かつ実行速度が上がるのなら使わない手は無い。PHP でコーディングは行わず、ただ実行するだけの「ユーザー」だからこの様な軽い気持ちでも大丈夫だろう。


 行った作業を追ってメモっておく。

PHP 5.6 の Uninstall

 Install 済のパッケージ一覧を出して確認しておく。うちのホストの場合は次の様になっていた。

php-pear-Auth-SASL-1.0.6-5.el7.noarch
php-common-5.6.16-1.el7.remi.x86_64
php-opcache-5.6.16-1.el7.remi.x86_64
php-imap-5.6.16-1.el7.remi.x86_64
php-bcmath-5.6.16-1.el7.remi.x86_64
php-pear-Net-SMTP-1.7.1-1.el7.remi.noarch
php-5.6.16-1.el7.remi.x86_64
php-ldap-5.6.16-1.el7.remi.x86_64
php-pecl-zip-1.13.1-1.el7.remi.5.6.x86_64
php-pear-Net-LDAP2-2.2.0-1.el7.remi.noarch
php-xml-5.6.16-1.el7.remi.x86_64
php-pear-1.10.1-1.el7.remi.noarch
php-kolab-net-ldap3-1.0.3-1.el7.remi.noarch
php-pear-Mail-Mime-1.10.0-1.el7.remi.noarch
php-pdo-5.6.16-1.el7.remi.x86_64
php-mysqlnd-5.6.16-1.el7.remi.x86_64
php-intl-5.6.16-1.el7.remi.x86_64
php-mcrypt-5.6.16-1.el7.remi.x86_64
php-pecl-jsonc-1.3.9-1.el7.remi.5.6.x86_64
php-pear-Net-Sieve-1.3.4-1.el7.remi.noarch
php-cli-5.6.16-1.el7.remi.x86_64
php-fpm-5.6.16-1.el7.remi.x86_64
php-pear-Net-Socket-1.0.14-1.el7.noarch
php-gd-5.6.16-1.el7.remi.x86_64
php-process-5.6.16-1.el7.remi.x86_64
php-mbstring-5.6.16-1.el7.remi.x86_64
php-pecl-apcu-4.0.10-1.el7.remi.5.6.x86_64
php-pear-Net-IDNA2-0.1.1-10.el7.noarch
php-pspell-5.6.16-1.el7.remi.x86_64

 これら全てを Uninstall するのだが、yum でやると依存関係の問題から必要なスクリプトまでをも Uninstall しようとするから「rpm -e –nodeps」で行うようにする。
 ここで一旦 Apache と php-fpm を停止させておいた方が良いかも。

$ sudo systemctl stop httpd php-fpm

 ワンライナーで rpm コマンドに渡される引数の中身を確認して控えておく。要は php-hoge みたくバージョンを含まない物にして 1 行に収めただけ。この出力をコピペしてどこかに控えておくと PHP 7.0 を入れる時にコピペで楽出来る。

$ rpm -qa | grep php | perl -pe 's/\-\d.*\n$/ /g;'; echo
php-pdo php-pear-Net-Socket php-imap php-cli php-process php-pear-Net-SMTP php-bcmath php-gd php-pear-Net-LDAP2 php-pecl-zip php-common php php-pecl-apcu-bc php-pear php-kolab-net-ldap3 php-pear-Mail-Mime php-intl php-pspell php-json php-pecl-apcu php-pear-Net-Sieve php-mcrypt php-mbstring php-pear-Auth-SASL php-mysqlnd php-fpm php-ldap php-xml php-pear-Net-IDNA2 php-opcache

 上記出力を端末でコピペするなり以下のようにして一発削除してしまう。

$ sudo rpm -e --nodeps `rpm -qa | grep php | perl -pe 's/\-\d.*\n$/ /g;'; echo`

yum のリポジトリ設定

 PHP 5.6 までは /etc/yum.repos.d/remi.repo の remi-php56 以下を enabled=1 にすれば良かった。なので enabled=0 に変更して保存。

[remi-php56]
name=Remi's PHP 5.6 RPM repository for Enterprise Linux 7 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/7/php56/$basearch/
mirrorlist=http://rpms.remirepo.net/enterprise/7/php56/mirror
# WARNING: If you enable this repository, you must also enable "remi"
enabled=0                # PHP 5.6 はもう使わないから無効化する
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

 PHP 7.0 は別ファイル /etc/yum.repos.d/remi-php70.repo があるので、そちらを開いて enabled=1 にしておいた。
 毎回 yum –enablerepo=remi-php70 とかしても良いけど面倒なので。

[remi-php70]
name=Remi's PHP 7.0 RPM repository for Enterprise Linux 7 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/7/php70/$basearch/
mirrorlist=http://rpms.remirepo.net/enterprise/7/php70/mirror
enabled=1                   # 今後は PHP 7 にするから有効化する。
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

PHP 7.0 の Install

 リポジトリの設定を終えれば yum install php とするだけで、7.0 の PHP を Install 出来るようになる。
 5.6 の Uninstall 時に控えておいたパッケージ類をまとめてコピペで yum install すれば PHP の環境は復旧する。

$ sudo yum install php-pdo php-pear-Net-Socket php-imap php-cli php-process php-pear-Net-SMTP php-bcmath php-gd php-pear-Net-LDAP2 php-pecl-zip php-common php php-pecl-apcu-bc php-pear php-kolab-net-ldap3 php-pear-Mail-Mime php-intl php-pspell php-json php-pecl-apcu php-pear-Net-Sieve php-mcrypt php-mbstring php-pear-Auth-SASL php-mysqlnd php-fpm php-ldap php-xml php-pear-Net-IDNA2 php-opcache

その後

 PHP 7.0 の Install が完了したら、Apache と php-fpm を起動する。

$ sudo systemctl start php-fpm httpd

 そして Apache の error_log でも tail -f しながら PHP を使用しているサイトとひたすらにらめっこを行うのみ。
 現状としては php.ini 等の細かいパラメータは php.ini.rpmsave を参照して戻すか、timezone 位は Asia/Tokyo にしておく。

動作確認した物や対応など

 WordPress 4.4 : Plugin である Simple Tags があるなら要修正
 OwnCloud 8.2.1 : 問題無し
 RoundCubeMail 1.1.3 : 動作不可。1.2beta なら動作可能。
 PostfixAdmin 2.93 : 問題無し
 phpMyAdmin 4.5.1 : 問題無し
 MediaWiki 1.25.3 : 問題無し
 Tiny Tiny RSS v15.7 (33d131d) : 問題無し

スポンサーリンク