複数バージョンのPHPを共存させる方法(Part2)
2018年09月18日

だいぶ放置してしまったが、Part1からの続き。

今回はPHPのインストールを行う。

・PHP5.3
・PHP5.6
・PHP7.1

をソースからコンパイルし、それぞれ用のApacheに読み込ませていく。

1. 各バージョンのPHPのダウンロード先を調べる。

http://php.net/downloads.php
にアクセスし、バージョンごとのダウンロードURLを調べる。

今回の場合は

■PHP5.3
http://jp2.php.net/get/php-5.3.29.tar.gz/from/this/mirror

■PHP5.6
http://jp2.php.net/get/php-5.6.38.tar.gz/from/this/mirror

■PHP7.1
http://jp2.php.net/get/php-7.1.22.tar.gz/from/this/mirror

から落とすことにした。

2. PHPをコンパイルする環境を整える。

PHPをコンパイルするためにはいろいろなライブラリー類が必要なため、インストールを行う。
詳しいことは公式マニュアル(http://php.net/manual/ja/install.unix.php)を要チェック。

yum install -y patch
yum install -y gcc
yum install -y re2c
yum install -y libxml2 libxml2-devel
yum install -y openssl-devel
yum install -y bzip2 bzip2-devel
yum install -y libcurl-devel
yum install -y libjpeg-devel
yum install -y libpng-devel
yum install -y libicu-devel
yum install -y gcc-c++
yum install -y libmcrypt libmcrypt-devel
yum install -y readline readline-devel
yum install -y libtidy libtidy-devel
yum install -y libxslt libxslt-devel
yum install -y autoconf
yum install -y libtool-ltdl libtool-ltdl-devel
yum install -y mysql mysql-devel
※MySQLを使いたいので、MySQLもインストールする。(PHPのコンパイル時に必要)

3. PHP5.3をインストールする。

3-1. ソースのダウンロード & 解凍する。

cd /usr/local/lib
wget -O php-5.3.29.tar.gz http://jp2.php.net/get/php-5.3.29.tar.gz/from/this/mirror
tar -zxvf php-5.3.29.tar.gz

3-2. PHPをコンパイルする。

cd php-5.3.29

./configure \
    --prefix=/usr/local/lib/php5.3 \
    --enable-mbstring \
    --with-pdo-mysql \
    --with-gd \
    --with-jpeg-dir=DIR \
    --with-png-dir=DIR \
    --with-openssl \
    --with-libxml-dir \
    --enable-xml \
    --with-curl \
    --with-apxs2 \
    --enable-zip \
    --with-bz2 \
    --with-zlib \
    --with-mysqli \
    --with-mysql \
    --with-libdir=lib64 \
    --with-mcrypt
※最低限のオプションではなく、普段よく使っているオプションを指定している。

make
make install

cp ./php.ini-development /usr/local/lib/php5.3/lib/php.ini

cd /etc/httpd/modules
mv libphp5.so libphp5.3.so

3-3. コンパイルしたPHP実行ファイルをPHP5.3用のApacheに読み込ませる。

Front側のApacheに手順「3-2.」でコンパイルしたPHPが読み込まれるようになっているので、読み込まれないようにする。
vi /etc/httpd/conf/httpd.conf
■変更前
217行目:LoadModule php5_module /usr/lib64/httpd/modules/libphp5.so

■変更後
217行目:# LoadModule php5_module /usr/lib64/httpd/modules/libphp5.so

今度はPHP5.3用のApacheに手順「3-2.」でコンパイルしたPHPを読み込ませる。
vi /etc/httpd_php5.3/conf/httpd.conf
※217行目付近に追記する。
LoadModule php5_module        /usr/lib64/httpd/modules/libphp5.3.so

拡張子が.phpのファイルのときにPHPを実行するための設定を追加する。
vi /etc/httpd_php5.3/conf.d/php.conf
※以下の内容を追記する。
<FilesMatch "\.(php)$">
    SetHandler application/x-httpd-php
</FilesMatch>
DirectoryIndex index.php

PHP5.3用のApacheを再起動する。
service httpd_php5.3 restart

3-4. PHPが動いているか確認する。

vi /var/www/html/index.php
※以下の内容を追記する。
<?php
    phpinfo();

「http://~:8053」にアクセスし、PHP5.3のphpinfoが表示されていれば成功。

4. PHP5.6をインストールする。

基本的には手順3で「php5.3」と書いているところを「php5.6」に置き換えて作業すればOK。
手順3と違うところを背景黄色にしておく。

4-1. ソースのダウンロード & 解凍する。

cd /usr/local/lib
wget -O php-5.6.38.tar.gz  http://jp2.php.net/get/php-5.6.38.tar.gz/from/this/mirror
tar -zxvf php-5.6.38.tar.gz

4-2. PHPをコンパイルする。

cd php-5.6.38

./configure \
    --prefix=/usr/local/lib/php5.6 \
    --enable-mbstring \
    --with-pdo-mysql \
    --with-gd \
    --with-jpeg-dir=DIR \
    --with-png-dir=DIR \
    --with-openssl \
    --with-libxml-dir \
    --enable-xml \
    --with-curl \
    --with-apxs2 \
    --enable-zip \
    --with-bz2 \
    --with-zlib \
    --with-mysqli \
    --with-mysql \
    --with-libdir=lib64 \
    --with-mcrypt
※最低限のオプションではなく、普段よく使っているオプションを指定している。

make
make install

cp ./php.ini-development /usr/local/lib/php5.6/lib/php.ini


cd /etc/httpd/modules
mv libphp5.so libphp5.6.so

4-3. コンパイルしたPHP実行ファイルをPHP5.6用のApacheに読み込ませる。

Front側のApacheに手順「4-2.」でコンパイルしたPHPが読み込まれるようになっているので、読み込まれないようにする。
vi /etc/httpd/conf/httpd.conf
■変更前
217行目:LoadModule php5_module /usr/lib64/httpd/modules/libphp5.so

■変更後
217行目:# LoadModule php5_module /usr/lib64/httpd/modules/libphp5.so


今度はPHP5.6用のApacheに手順「4-2.」でコンパイルしたPHPを読み込ませる。
vi /etc/httpd_php5.6/conf/httpd.conf
※217行目付近に追記する。
LoadModule php5_module        /usr/lib64/httpd/modules/libphp5.6.so

拡張子が.phpのファイルのときにPHPを実行するための設定を追加する。
vi /etc/httpd_php5.6/conf.d/php.conf
※以下の内容を追記する。
<FilesMatch "\.(php)$">
    SetHandler application/x-httpd-php
</FilesMatch>
DirectoryIndex index.php

PHP5.6用のApacheを再起動する。
service httpd_php5.6 restart

4-4. PHPが動いているか確認する。

「/var/www/html/index.php」は前の手順で作成しているため、作成不要。
「http://~:8056」にアクセスし、PHP5.6のphpinfoが表示されていれば成功。

5. PHP7.1をインストールする。

こちらも手順4と同様に、基本的には手順3で「php5.3」と書いているところを「php7.1」に置き換えて作業すればOK。
手順3と違うところを背景黄色にしておく。

5-1. ソースのダウンロード & 解凍する。

cd /usr/local/lib
wget -O php-7.1.22.tar.gz http://jp2.php.net/get/php-7.1.22.tar.gz/from/this/mirror
tar -zxvf php-7.1.22.tar.gz

5-2. PHPをコンパイルする。

cd php-7.1.22

./configure \
    --prefix=/usr/local/lib/php7.1 \
    --enable-mbstring \
    --with-pdo-mysql \
    --with-gd \
    --with-jpeg-dir=DIR \
    --with-png-dir=DIR \
    --with-openssl \
    --with-libxml-dir \
    --enable-xml \
    --with-curl \
    --with-apxs2 \
    --enable-zip \
    --with-bz2 \
    --with-zlib \
    --with-mysqli \
    --with-libdir=lib64 \
    --with-mcrypt
※最低限のオプションではなく、普段よく使っているオプションを指定している。
※PHP7.0にてmysql関数が廃止されたため、「--with-mysql」は指定していない。

make
make install

cp ./php.ini-development /usr/local/lib/php7.1/lib/php.ini


cd /etc/httpd/modules
mv libphp7.so libphp7.1.so

5-3. コンパイルしたPHP実行ファイルをPHP7.1用のApacheに読み込ませる。

Front側のApacheに手順「5-2.」でコンパイルしたPHPが読み込まれるようになっているので、読み込まれないようにする。
vi /etc/httpd/conf/httpd.conf
■変更前
218行目:LoadModule php7_module /usr/lib64/httpd/modules/libphp7.so

■変更後
218行目:# LoadModule php7_module /usr/lib64/httpd/modules/libphp7.so


今度はPHP7.1用のApacheに手順「5-2.」でコンパイルしたPHPを読み込ませる。
vi /etc/httpd_php7.1/conf/httpd.conf
※217行目付近に追記する。
LoadModule php7_module        /usr/lib64/httpd/modules/libphp7.1.so

拡張子が.phpのファイルのときにPHPを実行するための設定を追加する。
vi /etc/httpd_php7.1/conf.d/php.conf
※以下の内容を追記する。
<FilesMatch "\.(php)$">
    SetHandler application/x-httpd-php
</FilesMatch>
DirectoryIndex index.php

PHP7.1用のApacheを再起動する。
service httpd_php7.1 restart

5-4. PHPが動いているか確認する。

「/var/www/html/index.php」は前の手順で作成しているため、作成不要。
「http://~:8071」にアクセスし、PHP7.1のphpinfoが表示されていれば成功。

これで各PHPバージョン用に用意したApacheにて、それぞれのバージョンのPHPを動かすことができた。

あとはFront側のPHP経由で接続できるようにすれば完成となる。

Part3へ続く。

書いた人:木本

コメント一覧

コメントはまだありません。

コメントを投稿する

お名前
コメント
Top