その他
    ホーム デザイナー WEBデザイナー CentOS6.5のPHPをバージョンアップしたい
    CentOS6.5のPHPをバージョンアップしたい
     

    CentOS6.5のPHPをバージョンアップしたい

    「テスト環境のWordpressを最新版にアップデートしたいので、phpのバージョンをあげてほしい」と言われたデザイナーの今井です。

    そう言うわけで人生初のphpバージョンアップに挑戦しました。
    検索して、いくつか記事を見てわかったこと…それはphpのバージョンを上げるには今のphpを削除して、新しく入れ直すしかない、と言うことです。
    めちゃくちゃ怖いですね。
    問題が起こったらphpが使えなくなってしまう。
    そう思ってためらいましたが、場所はテスト環境。phpを使っているのはWordpressだけ。
    最悪Wordpressが使えなくなるだけです。そうなったらエンジニアさんに助けて貰えばいい。
    困ったら相談できるエンジニアがいるというのはアピリッツのいいところの一つです。
    (迷惑かもしれない、なんて考えてはいけない)
    覚悟が決まったのでさっそく作業を始めましょう。

    一番参考になった記事

    Qiita:CentOS7のPHPを5.6/7.0/7.1/7.2/7.3系にバージョンアップする

    結論から言うと基本的にはこちらの記事の手順で問題ないです。
    しかし、今回はサーバがCentOS6.5と、この記事より古く、うまくいかない部分があったのでそこで起こったエラーや問題とその解決方法を紹介します(脚注[1])。

    リポジトリを追加する

    Qiitaの記事にそう書いてありますね。いきなりつまづきました。
    りぽじとり…というワードはわかりますが、環境構築する際にリポジトリをどうこうするというのを聞いたことがありません。
    あまりにもわからなくてこのまま進めるのは不安なので調べます。

    EPELリポジトリ(レポジトリ)とは

    なるほどわからん。
    具体的なことはわかりませんが、わからないなりに、どうやらCentOSの界隈では普通に必要な工程であるらしいことを察しました。
    わからないことをわかるようになるまで調べるのはとてもいいことだと思いますが、時には理屈はわからないけど必要なことはわかった、という程度の理解で進めることも大事です。
    (壊れちゃっても最終兵器エンジニアを投入することでなんとかなると思ってます)

    まずはEPELリポジトリですね。

    # yum install epel-releas

    Qiitaの記事に従って、installコマンドを実行しました。

    Loaded plugins: fastestmirror, security 
    Determining fastest mirrors 
    # CentOS-Base.repo 
    YumRepo Error: All mirror URLs are not using ftp, http[s] or file. 
     Eg. Invalid release/repo/arch combination/ 
    removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt 
    Error: Cannot find a valid baseurl for repo: base

    エラーになりました。
    ちなみに、Qiitaにはもう一つコマンドがありますが、それもエラーが出てしまい通りません。
    とりあえずエラーの「Error: Cannot find a valid baseurl for repo: base」この辺のワードで検索をします。

    > 調べてみると、CentOSのサポートが切れるとyumコマンドが失敗するらしい。

    なるほど?
    というわけでCentOSのバージョンを調べると6.5であることが判明しました。
    なので、CentOS-Base.repoをこの記事の指示に従って修正していきます。
    ちなみに、この記事ではCentOS-Base.repo以外にも修正箇所があったようですが、今回作業した環境ではこのファイルのみの修正で大丈夫でした。
    再度installコマンドを実行。今度は成功したので、次のREMIリポジトリのインストールへ進みます。

    # rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

    またもエラーです。

    http://rpms.famillecollet.com/enterprise/remi-release-7.rpm を取得中
    エラー: 依存性の欠如:
    epel-release = 7 は remi-release-7.9-1.el7.remi.noarch に必要とされています

    なぜか日本語…なのはとりあえず置いといて、epal-releaseが7じゃないとダメって言われてるきがします。
    さっき入れたEPELリポジトリのバージョンを調べてみます。

    # yum list installed |grep epel
    epel-release.noarch 6-8 installed

    6-8ですね…ここでしばらくEPELリポジトリを7以上に上げる方法を調べますが、これと言って有力な情報はでてきません。
    でもいろいろな記事を見て気づきました。

    Qiitaの記事はCentOS7での話をしています。そしてこちらの環境は6.5…。
    「remi-release-7.rpm」は「remi-release-6.rpm」にしないといけないのでは?

    物は試しでやってみました。

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

    今度は無事インストールができたようです。
    この先問題があるかもしれないけど、とりあえず進めることにします。
    #実はepel-releaseは作業前からすでにインストール済みのものがあったのでこの工程は飛ばしてもよかったかもしれない。

    現在のPHPをすべて削除

    一番覚悟がいる工程です。
    これを実行したらもう後には戻れません。
    でもその前にこのQiitaの記事にはなくて他の記事に書いてあった、現状インストールされているパッケージを確認する、というのをやっておきます。

    # yum list installed | grep php

    これを実行すると

    php.x86_64 5.5.7-1.el6.remi @remi-php55
    php-cli.x86_64 5.5.7-1.el6.remi @remi-php55
    php-common.x86_64 5.5.7-1.el6.remi @remi-php55
    php-mbstring.x86_64 5.5.7-1.el6.remi @remi-php55
    php-mysqlnd.x86_64 5.5.7-1.el6.remi @remi-php55
    php-pdo.x86_64 5.5.7-1.el6.remi @remi-php55
    php-pear.noarch 1:1.9.4-23.el6.remi
    php-pecl-jsonc.x86_64 1.3.3-1.el6.remi.5.5
    @remi-php55
    php-pecl-zip.x86_64 1.12.3-1.el6.remi.5.5
    @remi-php55
    php-process.x86_64 5.5.7-1.el6.remi @remi-php55
    php-xml.x86_64 5.5.7-1.el6.remi @remi-php55

    こんな結果が返ってきました。いろいろ入っているようです。
    あとでこの辺のパッケージは入れ直さないといけないです(Qiitaにも最後にパッケージを入れ直す工程があるのですが、事前確認する工程がなかったので…)

    iniファイルのバックアップと、removeコマンドはQiitaの記事通りに。
    ここは問題なく進みました。

    新しいPHPをインストール、PHP関連パッケージの追加

    これもQiitaの記事に従って進めればOKです。
    関連パッケージは削除前に調べておいたものを入れていきます。
    一つだけ、「php-pecl-jsonc」が存在しなかったのですが、「php-json」がすでに初期セットにあり、それがあれば良さそうなのでよしとします。

    PHP設定の復元

    もともと初期のiniファイルから変更してないようだったので、この工程はとばしました。
    Qiitaの記事はこの辺りまでですね。
    初めての作業で心配なので追加で少し確認をします。

    PHPのバージョンを確認

    # php -v

    ちゃんとアップデートできたか確認したいので、phpのバージョンを調べます。

    PHP 7.3.25 (cli) (built: Nov 24 2020 14:31:55) ( NTS )
    AuthUserFile /var/www/html/wordpress/.htpasswd
    Copyright (c) 1997-2018 The PHP Group
    Zend Engine v3.3.25, Copyright (c) 1998-2018 Zend Technologies

    ちゃんと入ったようです。これでphpのアップデート作業は終わり。
    #あとになって最新の8にアップデートすればよかった、と気づきました…

    WordPressをアップデート

    一度はCentOSが古すぎてダメなのでは?と挫けかけましたが、ついにここまでたどり着きました。
    WordPressのアップデートは管理画面からボタン一つなので簡単です。
    …と思ったのですが、なぜかphpのバージョンが古いからダメ、と言われます。

    コマンドでは確かに最新のバージョンを確認したのに…
    と思いつつ、設定内容を確認するphpinfo()を試してみました。
    phpファイルを適当な名前で作成して

    <?php
    phpinfo();
    ?>

    内容はこれだけでブラウザで確認してみます。
    phpinfoの表示は5.5.7…古いままです。

    しかしサーバでコマンドを打つと先ほど同様、7.3と返ってきます。
    WordPressが最新のバージョンを認識しない件で調べても、.htaccessに何か書いてないか、というくらいの情報しかなく、行き詰まりました。

    調べても何も出てこないので、こう言う時はとりあえずできることをやる。
    Apacheを再起動してみました。

    …反映されてる!
    もしかして、Apache再起動なんて当然のことすぎて記事にも書いてなかったのでしょうか…。

    サーバの環境を変更したら、Apache再起動。

    これでWordpressも無事アップデートができました。

    おわりに

    今回初めてphpのアップデート作業をしましたが、多少のエラーはありつつも、基本的には問題なく作業を終えることができました。
    「やったことない作業だから、エンジニアさんに頼んでください」
    と言うこともできなくはなかったのですが、ちょうど案件の合間で時間もあったし、本当に困ったらエンジニアさんに相談もできる、と思ったのでやってみました。
    たまにはこういうちょっとした挑戦をやってみると、自分にもできると思えることが増えていくので楽しいですね。

    ——————————
    [1]CentOS6.5は2020年11月30日でサポート終了していますが、今回のサーバはクローズドなテスト環境であることと、その他諸事情によりOSはアップデートせずにPHPのアップデートのみを行いました。

    記事を共有