7.1を入れる前の自分のCentOS6の
phpバージョンは、5.3.3
バージョンを上げてもほぼ問題なく動いている。
drupal8はphp5.5.9以上が必要。
CentOS6のphpを普通にyumでupdateすると5.3.3より上にいかない。
で、どうするか。
それ以上のバージョンを使うためには、fedora用の物をCentOS用にyumインストールできるリポジトリepel(Extra Packages for Enterprise Linux)と、最新のphpモジュールなどをCentOSで使えるようにしたyumが使えるremi(Remi Colletという人が管理しているからだそうだ。)が必要になる。
本当は、この際、古いCentOS6を7へアップして解決すればそれが一番いい。
でも、CentOS7のphpは5.4番台だからCentOSを6から7へバージョンアップしただけでは解決しない。だったら、とりあえずCentOS6のままphpのバージョンを上げようかと思った。
バージョンは中途半端に5.5に上げるよりもphp7.1にしてしまった方がいいだろう。
Windowsのxamppの7.1.4は問題なく動いているから7.1で大丈夫だろう。
ただ、ここで問題がある。
自分はepelもremiもインストール済みなのだが、それらはphp7.0などが出る前のものでバージョンが古い。
だから、
/etc/yum.repos.d/remi.repoにremi-php71などの情報が書かれていない。(自分の場合[remi-php56]まで)。または、
/etc/yum.repos.d/以下にremi-php71.repoファイルがない。
だから、epel、remiのデータの更新をしておく必要がある。
その前に自分のOSバージョンの確認
# cat /etc/centos-release
CentOS release 6.9 (Final)
現在、epel-release-6-8.noarchが最新で、それををインストールする。
(最初、epel-release-6-9.noarchとか、その上のものをを探してしまった。でも今入っているのが6-8でそれが現時点で最新。だからepelに関しては更新する必要なし。remiだけ更新する。)
更新の仕方
リポジトリはテキストファイルなので、簡単なものは自分で書ける。
でも、epelとremiはrpmでインストールできる。パッケージングした方が管理がちゃんとできるからその方がいい。
最初に現在インストールされているリポジトリを表示させる
# yum repolist all
(直接ファイルを見た方が見やすいかな。)
その中から、関係あるリポジトリのバージョンを調べる。
# rpm -qa | grep epel
epel-
release-6-8.noarch =>この下の確認でわかるのだが、最新版が入っている。
# rpm -qa | grep remi
remi-release-6.5-1.el6.remi.noarch
これからインストールするリポジトリのバージョン確認をする。
最初にepel
# rpm -qip http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-9.noarch.rpm
Name : epel-release Relocations: (not relocatable)
Version : 6 Vendor: Fedora Project
Release : 8 Build Date: Mon 05 Nov 2012 12:54:41 PM JST
これ、6-8だから今入っているのと同じ。2012年から変わってない。つまり今の自分のは最新。
次にremi
# rpm -qip http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
warning: http://rpms.famillecollet.com/enterprise/remi-release-6.rpm: Header V4 DSA/SHA1 Signature, key ID 00f97f56: NOKEY
Name : remi-release Relocations: (not relocatable)
Version : 6.8 Vendor: Remi Collet
Release : 2.el6.remi Build Date: Fri 10 Feb 2017 10:27:59 PM JST
For PHP 5.6 you must enable the remi-php56 repository:
yum-config-manager --enable remi-php56
For PHP 7.0 you must enable the remi-php70 repository:
yum-config-manager --enable remi-php70
For PHP 7.1 you must enable the remi-php71 repository:
yum-config-manager --enable remi-php71
こっちは6.8-2で今の自分のものよりバージョンが上がっているしremi-php71が入っている。ということでこっち(remi)だけ更新すればいいと思う。
インストールされているリポジトリ削除のテスト(epelは更新しないことになったので削除しない。ただ、削除テストをすることで依存関係を知ることはできる。)
# rpm -e --test epel-release-6-8.noarch
error: Failed dependencies:
epel-release >= 6 is needed by (installed) remi-release-6.5-1.el6.remi.noarch
上のことから、remi-release-6.5-1.el6.remi.noarchを削除してからepel-release-6-8.noarchを削除する。
# rpm -e --test remi-release-6.5-1.el6.remi.noarch
削除
rpm -e remi-release-6.5-1.el6.remi.noarch
/etc/yum.repos.d/remi.repoが消えていることを確認しておく。
rpm -e epel-release-6-8.noarch (epelは更新しないことにしたので削除しない。)
最新リポジトリのインストール
もし、epelを更新するなら(更新しても同じ物になるはず。)
# rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
remiのインストール
# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-
6.rpm
(Remi's RPM repositoryというサイトのMaintained Enterprise Linux (RHEL / CentOS / Other clones)の下のリンク。Enterprise Linux 6 - repository auto-configuration package : remi-release-6.rpm)
remi-php54.repo
remi-php70.repo
remi-php71.repo
remi.repo
が/etc/yum.repos.d/に追加されたことを確認。
インストール後は、
リポジトリのファイル
/etc/yum.repos.d/remi.repoなどで
enabled=0
の設定になっていることの確認をする。
次にphp7.1のインストール
その前にphp5.3.3をどうするか
php5.3.3をアンインストールするかどうか。
php5.3.3はphp7.1に上書きされるみたいなのだけど、
php5.3.3を削除しておいた方が安全なのかなぁ。
どこかのサイトで、php7は別ディレクトリにインストールされると書いてあるのを見た覚えがある。5を削除すれば5の位置に7が丸々入るのか。
上書きした場合phpの設定は引き継ぐのか。
自分の決定。
上書きをするといらないファイルが残って悪さをする可能性もあるからとりあえずきれいさっぱりphp5.3.3を削除することに決めた。
アンインストールする前に、
# rpm -qa | grep php
をやって、今インストールされている物をメモしておく。
で、アンインストール
/etc/init.d/httpd stop
/etc/init.d/mysqld stop
yum remove php-*
php7.1のインストールするものを決める
今、php5.3.3でインストールされていたのが
# rpm -qa | grep php (# yum list installed | grep php)
php-gd-5.3.3-49.el6.x86_64
php-xml-5.3.3-49.el6.x86_64
php-5.3.3-49.el6.x86_64
php-devel-5.3.3-49.el6.x86_64
php-pdo-5.3.3-49.el6.x86_64
php-mbstring-5.3.3-49.el6.x86_64
php-cli-5.3.3-49.el6.x86_64
php-mysql-5.3.3-49.el6.x86_64
php-process-5.3.3-49.el6.x86_64
php-common-5.3.3-49.el6.x86_64
php-pear-1.9.4-5.el6.noarch
今の環境と同じものを作りたいのだから、
これのphp7.1バージョンをそのままインストールしてみる。
インストールする前に一つ一つの情報をinfoコマンドで確認する。
yum --enablerepo=epel,remi,remi-php71
info php php-gd php-xml php-devel php-pdo php-mbstring php-cli php-mysql php-process php-common php-pear
これを見れば、現在インストールされているもの(Installed Packages)と、remiからインストール可能なもの(Available Packages)が一覧になって表示される。
知りたい情報を表示させることもできる。(以下の2つの例はremiアップデート前の状態)
# yum --enablerepo=epel,remi info php71
Available Packages
Name : php71
Arch : x86_64
Version : 1.0
Release : 1.el6.remi
Size : 2.1 k
Repo : remi
Summary : Package that installs PHP 7.1
License : GPLv2+
Description : This is the main package for php71 Software Collection,
: that install PHP 7.1 language.
(これはphp71がリポジトリremiの中に書かれてなくても表示される。)
# yum --enablerepo=epel,remi info php
Installed Packages
Name : php
Arch : x86_64
Version : 5.3.3
Release : 49.el6
Size : 3.5 M
Repo : installed
Available Packages
Name : php
Arch : x86_64
Version : 5.4.45
Release : 13.el6.remi
Size : 2.8 M
Repo : remi
yum --enablerepo=epel,remi,remi-php71 install php php-gd php-xml php-devel php-pdo php-mbstring php-cli php-mysql php-process php-common php-pear
Installing:
php x86_64 7.1.6-1.el6.remi remi-php71 2.8 M
php-cli x86_64 7.1.6-1.el6.remi remi-php71 4.1 M
php-common x86_64 7.1.6-1.el6.remi remi-php71 992 k
php-devel x86_64 7.1.6-1.el6.remi remi-php71 1.3 M
php-gd x86_64 7.1.6-1.el6.remi remi-php71 67 k
php-mbstring x86_64 7.1.6-1.el6.remi remi-php71 977 k
php-mysqlnd x86_64 7.1.6-1.el6.remi remi-php71 203 k
php-pdo x86_64 7.1.6-1.el6.remi remi-php71 105 k
php-pear noarch 1:1.10.4-2.el6.remi remi 367 k
php-process x86_64 7.1.6-1.el6.remi remi-php71 61 k
php-xml x86_64 7.1.6-1.el6.remi remi-php71 174 k
Installing for dependencies:
gd-last x86_64 2.2.4-1.el6.remi remi 126 k
libwebp x86_64 0.4.3-3.el6 epel 210 k
php-json x86_64 7.1.6-1.el6.remi remi-php71 53 k
こんな感じで入った。
/etc/init.d/httpd start
/etc/init.d/mysqld start
で、drupal7のサイトは普通に立ち上がった。
他のサイトが飛んでしまっていた。
何年も前に作ったサイトで、どんな設定だったかをを忘れてる。
phpのバックアップを取っておくべきだった。
-------------------------------------------------------------------------
リポジトリepelとremiは
どちらも普段はoff(enabled=0)にしておく。
理由は本来のパッケージとごちゃ混ぜになってしまったり、アップデートしなくていいものがアップデートされたりするからだ。
offにすると、php上位バージョンをインストール後は、いちいち
yum --enablerepo=remi,epel update php*
で、php関係のアップデートの確認が必要になる。
面倒だけどしようがない。(yumのcronアップデートを使えばいいのだろうけど、cronはUpdate後にPCがおかしくなっていても気づかずにいたことがあったのでそれはやらない。)
--------------------------------------------------------------------------
drupalで推薦されているphpのバージョンが書かれている場所。
\drupal-8.3.3\core\INSTALL.txt
に、
PHP 5.5.9 (or greater). For better security support it is
recommended to update to at least 5.5.21 or 5.6.5.
と書いてある。
drupalのサイトには
PHP Built-in Web Server (Development Only)
PHP Built-in Web Server is included as a CLI SAPI tool in PHP versions 5.4.0 and above.
と書いてある。セキュリティを考慮しなくてもいいなら5.4.0でも動くよってことなのかな。
drupal7 PHP 5.2.5 or higher (5.4 or higher recommended)
だそうだ。
-----------------------------------------------------------------------------------
何かの時のために、削除した時の情報を残しておく。
# yum remove php-*
Loaded plugins: fastestmirror, priorities, refresh-packagekit, security
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package php.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-cli.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-common.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-devel.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-gd.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-mbstring.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-mysql.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-pdo.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-pear.noarch 1:1.9.4-5.el6 will be erased
---> Package php-process.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-xml.x86_64 0:5.3.3-49.el6 will be erased
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================================================================================================
Package Arch Version Repository Size
=============================================================================================================================================================
Removing:
php x86_64 5.3.3-49.el6 @base 3.5 M
php-cli x86_64 5.3.3-49.el6 @base 6.2 M
php-common x86_64 5.3.3-49.el6 @base 2.9 M
php-devel x86_64 5.3.3-49.el6 @base 3.0 M
php-gd x86_64 5.3.3-49.el6 @base 324 k
php-mbstring x86_64 5.3.3-49.el6 @base 2.1 M
php-mysql x86_64 5.3.3-49.el6 @base 216 k
php-pdo x86_64 5.3.3-49.el6 @base 168 k
php-pear noarch 1:1.9.4-5.el6 @base 2.2 M
php-process x86_64 5.3.3-49.el6 @base 65 k
php-xml x86_64 5.3.3-49.el6 @base 307 k
Transaction Summary
=============================================================================================================================================================
Remove 11 Package(s)
Installed size: 21 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
Erasing : php-mysql-5.3.3-49.el6.x86_64 1/11
Erasing : php-devel-5.3.3-49.el6.x86_64 2/11
Erasing : 1:php-pear-1.9.4-5.el6.noarch 3/11
Erasing : php-5.3.3-49.el6.x86_64 4/11
Erasing : php-cli-5.3.3-49.el6.x86_64 5/11
Erasing : php-pdo-5.3.3-49.el6.x86_64 6/11
Erasing : php-process-5.3.3-49.el6.x86_64 7/11
Erasing : php-gd-5.3.3-49.el6.x86_64 8/11
Erasing : php-xml-5.3.3-49.el6.x86_64 9/11
Erasing : php-mbstring-5.3.3-49.el6.x86_64 10/11
Erasing : php-common-5.3.3-49.el6.x86_64 11/11
warning: /etc/php.ini saved as /etc/php.ini.rpmsave
Verifying : php-mbstring-5.3.3-49.el6.x86_64 1/11
Verifying : php-pdo-5.3.3-49.el6.x86_64 2/11
Verifying : php-mysql-5.3.3-49.el6.x86_64 3/11
Verifying : php-xml-5.3.3-49.el6.x86_64 4/11
Verifying : php-cli-5.3.3-49.el6.x86_64 5/11
Verifying : 1:php-pear-1.9.4-5.el6.noarch 6/11
Verifying : php-5.3.3-49.el6.x86_64 7/11
Verifying : php-gd-5.3.3-49.el6.x86_64 8/11
Verifying : php-devel-5.3.3-49.el6.x86_64 9/11
Verifying : php-process-5.3.3-49.el6.x86_64 10/11
Verifying : php-common-5.3.3-49.el6.x86_64 11/11
Removed:
php.x86_64 0:5.3.3-49.el6 php-cli.x86_64 0:5.3.3-49.el6 php-common.x86_64 0:5.3.3-49.el6 php-devel.x86_64 0:5.3.3-49.el6
php-gd.x86_64 0:5.3.3-49.el6 php-mbstring.x86_64 0:5.3.3-49.el6 php-mysql.x86_64 0:5.3.3-49.el6 php-pdo.x86_64 0:5.3.3-49.el6
php-pear.noarch 1:1.9.4-5.el6 php-process.x86_64 0:5.3.3-49.el6 php-xml.x86_64 0:5.3.3-49.el6
---------------------------------------------------------------------------------
OPcacheに関してのPHP7.1は
http://yasutam.blogspot.jp/search?q=PHP+OPCODE+CACHING+opcache++++CentOS++php7.1