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


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

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

```bash
rpm -qa | grep php
```

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

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

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

```bash
yum info php
```

とすると、

```bash
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（標準）とわかります。

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

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

```bash
yum repolist all
```

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

```bash
/etc/yum.repos.d
```

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

###リポジトリ自体を更新（削除し再インストール）

なんか、矛盾が出ておかしくなることもあるので、一旦消して、再インストールします。
私の場合、remiとepelがインストールされていたので、それぞれのパッケージ名を調べます。

```bash
rpm -qa | grep epel
rpm -qa | grep remi
```

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

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

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

```bash
rpm -e remi-release-5-8.el5.remi.noarch
rpm -e epel-release-6-8.noarch
```

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

```bash
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とすればいいので。

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

```bash
yum remove php*
```
php.iniを保存したとかのアラート？が出るが無視。

###インストール
まずは、利用できる最新のものを調べる。

```bash
yum --enablerepo=epel,remi info php
```

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

```bash
yum install php php-common --enablerepo=remi,remi-php56
```
依存関係を処理するために、remiも指定したほうがいい（remi-php56はphp関連のみしかないみたい）。

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

```bash
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()がどうたらこうたらで怒られるので、その場合は入れる。

```bash
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するときに怒られる（というか落ちる）。

```bash
yum install libmcrypt --enablerepo=epel
```

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

###何はなくともApache再起動

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

###その他メモ

composerは、

```bash
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
```

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

```bash
sudo chmod -R 777 storage
```

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