40
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHP5.3.3環境を2017年に用意する方法

Posted at

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をベースするといい。
40
30
0

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
  3. You can use dark theme
What you can do with signing up
40
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?