「so」は「shared object(シェアード・オブジェクト)」の略です.古い環境をWEB構築する方法.
Photo by Suzy Hazelwood on Pexels.com

「so」は「shared object(シェアード・オブジェクト)」の略です.古い環境をWEB構築する方法.

2025年3月9日
文字数[1512文字] この記事は2分53秒で読めます.

おはようございます.以前の職場でPHPのソースコードをビルドしてPHPのバージョン何パターンか作っていましたが、今でもテスト環境というものはあるのでしょうか?アンサー無いでしょうね、きっと.今ではDockerという便利な物がありますから.

さて古い環境をWEB構築する手順を箇条書きに記載していきます.まず古いPHPを動かすには古いOpenSSLが必要になってきます.まずはOpenSSLのソースコードが必要になりそれをビルドします.OpenSSLがPHPで必要になってくると書きましたが、必要になるパターンはphp-opensslを使用する場合です.例えばphpのフレームワークなどを導入している環境では必ずと言って良いほど、php-opensslを使用しているので古いOpenSSLも必要になってきます.

sudo yum groupinstall -y "Development Tools"
sudo yum install -y perl gcc make
wget https://www.openssl.org/source/openssl-1.1.1.tar.gz
tar xvf openssl-1.1.1.tar.gz
cd openssl-1.1.1
./config --prefix=/usr/local/openssl1.1.1 --openssldir=/usr/local/openssl1.1.1 shared zlib
make
make install

上記のような感じでOpenSSLのソースコードをダウンロード=>解凍=>ビルドします.ここでミソなのがso(拡張子:shared object(シェアード・オブジェクト))を作って上げることです.ここで自分は躓きました.soを作らずにphp-opensslをビルドしていたのでビルド時にエラーが出力されました.

phpのビルドは下記のような感じです.他にも拡張モジュールが必要な場合はそれに合わして追記記載が必要になってきます.

sudo yum groupinstall -y "Development Tools"
sudo yum install -y autoconf bison re2c libxml2-devel sqlite-devel \
    libcurl-devel openssl-devel git gcc make
git clone https://github.com/php/php-src.git
cd php-src
git checkout PHP-7.0.0
./buildconf
./configure --prefix=/usr/local/php7.0 --with-openssl=/usr/local/openssl1.1.1
make
make install

こうするとPHPの古いフレームワークなどが使用できるようになります.尚、フレームワークなどを使用する場合は他の拡張モジュールがもう少し必要になってきますが原理原則を理解すると出来ると思います.Apacheで動かすには「–with-apxs2=/usr/sbin/apxs」の記載も必要になってきます.尚、php-fpmを使用したい場合は「–enable-fpm」を追記してFirstCGIで動かすということで良いと思います.両者ともApacheの設定は必要となります.

明日へ続く