複数バージョンのPHPを共存させる方法(Part2)
だいぶ放置してしまったが、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/libwget -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へ続く。