2017年10月にPHP5.3.3環境を作るのはとても大変でした。
PHP5.3はすでにEOLを迎えているため、セキュリティホールが修正されずに残りうる危険性があったりとプロダクションで使い続けるのは大変よろしくないですが、大人の都合でどうしても必要になってしまいました。
PHP5.3環境を構築するにあたって、試してダメだったことと、上手く行ったこととを残しておきたいと思います。
試してすんなりできなかったこと
- Homebrewの
brew install php53
- なぜか
/usr/local/bin/php
だけが作られず。 - macOSをHigh Sierraにアップデートしたせいか? Sierraのときはこれで行けた。
- 同僚からCeller内のphp5.3.29をまるっともらったが、拡張が上手く入らず。
- なぜか
- Docker Hub公式のphp:5.3-cli
- 5.3.29未満は提供されておらず、また、入れたい拡張がどうしてもビルドエラーになってしまう。
- PHP museumの5.3.3をビルド。
- ubuntu:14.04でビルドを試みたがlibxmlのバージョンが非互換のためエラー。
- Ubuntu 12.04に落として、php-buildでやったが、libjpegが非互換…。
- PPAでphp5.3を探す。
- ぴったり5.3.3でなくてもいいやと思い始めて探したが欲しい拡張まで入れられるPPAを見つけられず。
ここまで1人日使った……😂
うまくいった方法
うまくいった方法はCentOS 6.9でyum install php
すること。なんとRedHatは未だにPHP5.3をサポートしている。神対応すぎる……😇 おかげでDockerfileも短くすみました。Ubuntu派だったので、CentOSは眼中になかった。好き嫌いはだめですね。
Dockerfile
FROM centos:6.9
ENV PHP_VERSION 5.3.3
RUN yum install -y \
php \
php-mbstring \
php-pgsql \
php-mysql \
php-gd && \
yum clean all
CMD ["php", "-a"]
もう二度とビルドしたくないので今回ビルドしたDockerイメージを速攻でDocker Hubにあげました → suin/php533 - Docker Hub。
拡張は次のものをバンドルしてます
bz2
calendar
Core
ctype
curl
date
ereg
exif
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
json
libxml
mbstring
mysql
mysqli
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_pgsql
pdo_sqlite
pgsql
Phar
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
sqlite3
standard
tokenizer
xml
zip
zlib
まとめ
- レガシー環境はRedHatがサポートしているかもしれないので、Ubuntu派の人もこういうときはCentOSをベースするといい。