search
LoginSignup
0

More than 3 years have passed since last update.

posted at

updated at

VCCW3.x で、PHPのバージョンを5.6にする

結論

// in the client
$ sudo add-apt-repository ppa:ondrej/php   ### PPAのインストール
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt install php5.6   ### php5.6のインストール
$ sudo a2enmod php5.6   ### apacheにphp5.6モジュールを組み込む(有効化)
$ sudo a2dismod php7.0   ### apacheからphp7.0モジュールを除去(無効化) これを書いてない記事が多い
$ sudo apt-get install php5.6-mysql   ### 'Your PHP installation appears to be missing the MySQL extension which is required by WordPress.' エラーへの対処
$ sudo apt-get install php5.6-mbstring   ### WP Multibyte Patchあたりが必要としてるっぽい
$ sudo service apache2 restart

経緯

普段WordPressの開発に、Virtualbox + Vagrant + VCCW3 を使っているのだけど、未だWordPressの本番環境ではPHP5.x上で動かしてるものも少なくなくなくなくなくなくて、できるだけ本番環境に近い開発環境を用意したいものの、VCCW3はUbuntu16.04がベースにあるため、PHPの標準バージョンが7な上に、PHP5.6を標準でサポートしてないという状況のため、もどかしい気持ちになっていた。

手順

PPAを入れる

ペンパイナッポーアッポーではなく、パーソナル・パッケージ・アーカイブのことらしい。Ubuntu公式ではなく、そのユーザーが保守しているパッケージ集で、公式ではサポートしなくなったアプリケーションなどをaptでインストールできるようにしてくれる。
PHP5.6のインストールには、Ondřej Surý氏によるPPAを用いる。
PPAをインストールしたら、リストの更新のためにも、 apt-get updateをしておこう。

$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt-get update
$ sudo apt-get upgrade # ついで

PHP5.6 を入れる

Linux系の環境で、導入されている設定を切り替えるには、いろんな手続きが必要だったりするものだけど、今回はひとまずいきなりPHP5.6を入れても大丈夫のようだ。
PPAを入れることで、PHP5.6のインストールは可能になったのだから、早速入れてしまおう。

$ sudo apt-get install php5.6

PHP5.6 を apache で使えるようにする。

PHP5.6をインストールしただけではまだ使える状態にはなっていない。というか、apacheが「PHP5.6を使うべき」という認識をしてくれていないのだ。このままでは依然PHP7.0を使い続けてしまう(なぜPHP7.3じゃないんだろう…)

そこで、apacheのモジュールに、PHP5.6モジュールを組み込んで、使えるようにする。ただ、有効にしてapacheをrestartしてみると、実はセグフォるだけで、起動してくれない。理由は「PHP7.0モジュールも組み込まれているから」である。($ ls /etc/apache2/mods-enabled/を見てみると、php5.6.loadphp7.0.loadの2つが設置されいていることに気づくはずだ)。なので、これの除去もちゃんと行なっておく。

$ sudo a2enmod php5.6   ### apacheにphp5.6モジュールを組み込む(有効化)
$ sudo a2dismod php7.0   ### apacheからphp7.0モジュールを除去(無効化) これを書いてない記事が多い

余談1

調べた限りでは、この$ sudo a2dismod php7.0について書かれているサイトがほぼ無くて、結構迷った。実際、a2dismod php7.0をキーワードに検索して初めて見つけたくらいだ。

余談2

本来ならここで、CUIのPHPバージョンも5.6にしておくべきなんだろうが、wp-cliの何かプラグインがPHP5.xでは動かなかった気がするので、一旦保留。ただ、wp-cli経由でWordPress動かしたときに、PHP7.x上でWordPressを処理するのであれば、CUIの方もPHP5.6に変えないといけない気がするなぁ…

PHPからmysqlが

ここでapacheをrestartしてみると、起動はするもののページがちゃんと表示されてくれない、という問題が起こる。画面にはそっけなく

Your PHP installation appears to be missing the MySQL extension which is required by WordPress.

というテキストが表示されるのみだ。
これは、今のPHPモジュールからMySQL拡張が利用できないが故に表示されるようで、実際調べてみると、$ php -m | grep mysqlの結果にmysqlという行がないことに気づく。
一般に、こういうときは $ sudo apt-get install php-mysqlと打って、PHPのmysqlモジュールを入れるべきなのだが、言ってみればこのデフォルトのライブラリは、Ubuntu16.04標準のPHP7.x用のmysqlモジュールを指しているので、これでは解決しない。ちゃんと php5.6用のモジュールを入れてあげよう。

$ sudo apt-get install php5.6-mysql

mbstringも大事

普段はあまり有効性を感じないんだけど、まぁ大体の日本語環境では有効化されているプラグインWP Multibyte Patch。別になくても普通に使えるものの、もし自身の環境でこれが有効化されているなら、その内部で mbstring を使っているようなので、これも使えるようにしておく。
上記同様、普通ならphp-mbstringを入れるので良いのだけど、今回はPHP5.6向けのものが必要なので、php5.6-mbstringで対応する。

$ sudo apt-get install php5.6-mbstring

apache2をリロード!

最後に、今まで入れたり変更したりした設定を有効にするため、apache2をリロードする。
リロード方法はいくつかあるが、$ sudo a2enmod php5.6を実行したときに表示された方法でリロードすることにする。

$ sudo service apache2 restart

おわりに

いままでずっと「本番はPHP5.xだけど、まぁPHP7.xで動けばだいたい動くでしょ、WordPressは」みたいな雑な考えで逃げ続けていたのだが、WordPressも5.2になって、推奨環境がPHP7.3以上になり、さらに

年末に PHP 7 以降を最低必須バージョンにすることも視野に入れつつ
日本語 « PHP 最低必須バージョンの変更 — WordPress

とか公式にかかれていたりするので、そのうちPHP5.6で動くものが減ってくる可能性も考えると、今の構成(WordPressはもちろん、各種プラグインも)がちゃんとPHP5.6で動くかどうか検証しないといけないなーって状況になってきて、ここ数年ちゃんとLinux触ってないながらにいろいろ調べることになったわけなんですが、案外VCCW3でWordPressを開発してる人が少ないのか、これ系の情報があまり見つからないんですよね。いや、WordPressを使う人が、Linuxの環境いじれることの方が珍しいだけなんでしょうけど。

参考サイト/記事

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0