khurata’s blog

khurata’s blog

CentOS 6.9 に php 5.6 を入れた記録

(もともと「Yahoo!ブログ」だったものを転載しています)
(投稿日時:2017/10/31(火) 午後 10:42)

 

 「CentOS 6.9 に php 5.6 を入れる」なんて、普通なら、サクッと終わらせる事が出来る……はずなのだが、どういうわけかウチの環境では何かの度にエラーが出て、ひとつずつ解決しながらの作業になった(汗)。

 その度に、先達が残してくれたネット記録のおかげで解決できたので、ここにささやかながら自分の環境における作業記録を残す。

 

1.もともとの環境

PC:DELL Optiplex 780 SFF
CPU:Intel Core2Duo E7500
メモリ:2GB(DDR3-1066)
OS:CentOS 6.9(Final) 64bit
HDD:空き約 190GB
php バージョン:5.4

 

2.バージョンアップしたいと思った動機

 5.4.x でずっと使ってきたのだが、const で配列の定数を書きたい事情が生じたので、5.6 に上げようと思った。

 

3.本来するべき作業

# yum -y upgrade --disablerepo=* --enablerepo=remi,remi-php56 php*
# /etc/rc.d/init.d/httpd restart
 これだけで済むはずだったが……。

 

4.実際にやった作業

 epel も remi も最新の状況にしてある(つもりだった)にも関わらず、php のバージョンが 5.4 にしかならない。 # yum remove php-* や # yum clean all などを実行した後でも状況が変わらない。

 まずは、yumリポジトリを、より新しいミラーを参照するように書き換えた。
# sed -i -e "s|mirror\.centos\.org/centos/\$releasever|vault\.centos\.org/6.6|g" /etc/yum.repos.d/CentOS-Base.repo
# sed -i -e "s|#baseurl=|baseurl=|g" /etc/yum.repos.d/CentOS-Base.repo
# sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-Base.repo
# yum clean all
# yum update
cf. https://qiita.com/m_kawaguchi/items/1305373affa57a0fd77b

 次に、epel と remi のリポジトリを拡張する。
# rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
# rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

 こうする事により、php 5.6 が参照できるようになっているはず。 確認してみる。
# yum info --disablerepo=* --enablerepo=remi-php56 php

 確かに php 5.6.x が表示されている。 つまり、ここで # yum install --disablerepo=* --enablerepo=remi-php56 php とすれば、インストール出来るはずなのだが、更に念を入れて、remi-php56 リポジトリの優先度を強制的に上げておく。
# vi /etc/yum.repos.d/remi.repo

[remi-php56] の直下に
priority=1
という行を追加する。

 そして、ひとまず php-gd 以外を必要な分だけインストールする。
# yum -y install --disablerepo=* --enablerepo=remi,remi-php56 php php-mysqlnd php-mbstring php-pdo php-xml php-devel php-mcrypt php-pear php-common php-cli

 ここまでは無事にインストールできたが、この時点で php-gd をインストールしようとしても gd-last が無いために失敗する。 そこで次は gd-last をインストールする。
# yum --enablerepo=remi install gd-last

 しかしここで

エラー: パッケージ: gd-last-xxx
要求: libwebp.so.5()(64bit)

で失敗してしまった。 そこで epel から libwebp をインストールする。
# yum -y install epel-release
# yum update
# yum -y install libwebp --enablerepo=epel
# yum --enablerepo=remi install gd-last
cf. http://scribble.washo3.com/linux/redhat-php56-gd-last.html

 これでようやく php-gd がインストールできた。
# yum -y install --enablerepo=remi-php56 php-gd

 忘れずに emi-php56 リポジトリの優先度を元に戻す。
# vi /etc/yum.repos.d/remi.repo
(さっき追加した priority=1 の行を削除する)

 ウチの環境では ImageMagick を使っていたので、これもバージョンアップする。
# yum update --enablerepo=remi,epel ImageMagick*

 httpd を再起動して、php.info を確認してみる。
# /etc/rc.d/init.d/httpd restart

 しかし悲しいかな、php とバージョンの食い違いが生じていた。
$ php -v

PHP Warning: PHP Startup: imagick: Unable to initialize module


 バージョン不一致を修正するには pecl upgrade imagick する必要があるが、その前に pear を更新しておく。
# pear upgrade

 ……のだが、今度は

downloading Archive_Tar-1.4.3.tgz ...
Starting to download Archive_Tar-1.4.3.tgz (20,682 bytes)
...done: 20,682 bytes

と、正しくアーカイブを持ってきているように見えるにもかかわらずエラーになってしまった。 アーカイブのダウンロードは成功しているが配置がうまくいっていないように見えるので、手動で解凍・配置してしまう事にする。
# cd /tmp/pear/download/
# tar -zxvf Archive_Tar-1.4.3.tgz
# mv /usr/share/pear/Archive/Tar.php /usr/share/pear/Archive/Tar.php.org
# cp /tmp/pear/download/Archive_Tar-1.4.3/Archive/Tar.php /usr/share/pear/Archive/
# pear upgrade
cf. https://qiita.com/muramount/items/2071d005eb1155a08326

 無事に pear upgrade できたので、Imagick をバージョンアップする。
# pecl upgrade imagick

 しかし pecl がエラーを吐いて実行できない(悲)。 本当に色々あるなぁ、xml 関係は入れてあるはずなのに……姑息策だが pecl スクリプトを一時的に変更しておくことにする。
# vi `which pecl`
$PHP -C の後にある -n を削除する。
cf. https://teratail.com/questions/52458

# pecl upgrade imagick
やっと成功した。 pecl スクリプトを元に戻しておくのを忘れずに。
# vi `which pecl`
($PHP -C の後に -n を書き加える)

 バージョン確認などして問題無い事を確める。
$ php -v

 httpd を再起動。
# /etc/rc.d/init.d/httpd restart

 今まで稼働していた php スクリプトを一通り動作確認してみたところ、特に問題は無さそうである。 終わった~……。

 

5.参考にさせていただいたページ

https://qiita.com/pakiln/items/645e8a97cde46b59f9f8
https://www.orenante.com/%E3%80%90centos7%E3%80%91php5-6-%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%9F%E3%81%8F%E3%81%A6-enablereporemi-php56-%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6/
https://qiita.com/ozawan/items/caf6e7ddec7c6b31f01e
(以上)