Edited at

CentOS6.4(6.5)のPHPを5.6にアップデートする方法

More than 3 years have passed since last update.

私は、標準レポジトリ派です。というわけで、PHPは5.3.3を利用していて、ほとんど不都合はありません。が、ここにきてLaravel5を使う状況になったので、仕方なく、5.4以上にアップデートします。5.6というのがあったので、結果それにしました。


今、何がインストールされているかの確認

rpm -qa | grep php

で、ぞろぞろ出てきます。


そもそも、どこのリポジトリからインストールしたものか?

めったに触らないので、正直覚えてません。ちょうしにのって、remiからか、epelからか。。。

yum info php

とすると、

Installed Packages

Name : php
Arch : x86_64
Version : 5.3.3
Release : 40.el6_6
Size : 3.5 M
Repo : installed
From repo : updates
Summary : PHP scripting language for creating dynamic web sites
URL : http://www.php.net/
License : PHP
Description : PHP is an HTML-embedded scripting language. PHP attempts to make
: it easy for developers to write dynamically generated webpages.
: PHP also offers built-in database integration for several
: commercial and non-commercial database management systems, so
: writing a database-enabled webpage with PHP is fairly simple. The
: most common use of PHP coding is probably as a replacement for CGI
: scripts.
:
: The php package contains the module which adds support for the PHP
: language to Apache HTTP Server.

From repoがそうなので、updates(標準)とわかります。


そもそも、どのリポジトリを登録したか?

上記同様、覚えてないことが多いです。そんな時は、

yum repolist all

とすると、利用対象のrepoリストが出てきます。

/etc/yum.repos.d

の中のファイル見ても、わかりますが。


リポジトリ自体を更新(削除し再インストール)

なんか、矛盾が出ておかしくなることもあるので、一旦消して、再インストールします。

私の場合、remiとepelがインストールされていたので、それぞれのパッケージ名を調べます。

rpm -qa | grep epel

rpm -qa | grep remi

消してしまって問題ないか、--testオプションをつけて調べます。

rpm -e --test epel-release-6-8.noarch

なぜか、epelはremiに依存しているらしいので、remiから消します。

rpm -e remi-release-5-8.el5.remi.noarch

rpm -e epel-release-6-8.noarch

そして、再インストール。ダンロードURLは変わるので、随時チェック。

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

epelはなぜか標準でenable=1となっているので0に変更しておく。必要に応じて、--enablerepo=epelとすればいいので。


まずは、既存のものを削除

yum remove php*

php.iniを保存したとかのアラート?が出るが無視。


インストール

まずは、利用できる最新のものを調べる。

yum --enablerepo=epel,remi info php

5.6.8というのがremi-php56というところにあるらしい。まずは、phpだけ。依存関係で怒られるのでcommonも。

yum install php php-common --enablerepo=remi,remi-php56

依存関係を処理するために、remiも指定したほうがいい(remi-php56はphp関連のみしかないみたい)。

その他、使うものとして、

yum install php-mysqlnd php-mbstring php-gd php-pdo php-gd php-xml --enablerepo=remi,remi-php56

このあたりを入れる。php-xmlはPHPUnitで必要だと言われる。

php-gdを入れる際、libgd.so.3()がどうたらこうたらで怒られるので、その場合は入れる。

yum install --enablerepo=remi gd-last

phpがらみでは、

php-pdo(済)

php-mysqlnd(済)

php-gd(済)

php-odbc

php-pear

php-xml(PHPUnitでいる:Laraveでいる)

php-xmlrpc

php-mbstring

php-mcrypt(Laravelでいる)

などがインストール候補となるだろう。

php.iniはとりあえず、date.timezon=Asia/Tokyoとしておく。


for Laravel

ララベル用に、libmcryptとphp-mcryptをインストールする。libmcryptはepelにあるみたい。

php-xmlも入っていないと、composerでcreate-projectするときに怒られる(というか落ちる)。

yum install libmcrypt --enablerepo=epel

yum install php-mcrypt --enablerepo=remi,remi-php56


何はなくともApache再起動

sudo service httpd restart

phpinfo()などで、設定が反映していることを確認して下さい。


その他メモ

composerは、

curl -sS https://getcomposer.org/installer | php

mv composer.phar /usr/local/bin/composer

あと、ローカル開発しているとついつい忘れるが、

sudo chmod -R 777 storage

を忘れずに。画面がまっしろになります。