Closed15

PHP4 を Docker で動かす

opparaoppara

昔の実績 があるので debian 諦めて centos を使ってみる

% docker pull --platform linux/amd64 centos:6.9
% docker run --platform linux/amd64 --rm -it --name php4 centos:6.9 bash
opparaoppara
# yum -y install vim
qemu: uncaught target signal 11 (Segmentation fault) - core dumped
Segmentation fault

ぐぬぬ

opparaoppara

Use Rosetta for x86/amd64 emulation on Apple Silicon を有効にしてみる。
(いつのまにか Docker VMM になっていた)

# yum -y install vim
Loaded plugins: fastestmirror, ovl
Setting up Install Process
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os&infra=container error was
14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"
Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again

リポジトリの url 変えればいけそう

opparaoppara

いけた

# sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
# sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
# yum -y install vim
略
Complete!
opparaoppara

openssl 関連でコケるのは分かっているので avafloww/docker-php4 の古い openssl を使ってみる。

(Qiita の記事は PHP のソースを変更している)

opparaoppara

再度挑戦

% docker run --platform linux/amd64 --rm -it -v ./php-build:/opt/ --name php4 centos:6.9 bash
opparaoppara

リポジトリの url 変更して、ビルドに必要なライブラリをインストールする。

# sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
# sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
# yum -y update && yum clean all
# yum -y install  httpd-devel \
postgresql-devel \
flex \
libcurl-devel \
libxml2-devel \
libjpeg-turbo-devel \
libpng-devel \
freetype-devel
opparaoppara

openssl のインストール

# cd /opt
# tar xvf openssl-0.9.8x.tar.gz
# cd openssl-0.9.8x
# ./config --prefix=/usr/local/openssl-0.9.8 && make -j8 && make install_sw
略
make[1]: gcc: Command not found

gcc がない。。。

opparaoppara
# yum -y install gcc
# ./config --prefix=/usr/local/openssl-0.9.8 && make -j8 && make install_sw
略
make[1]: *** write jobserver: Bad file descriptor.  Stop.
make[1]: *** Waiting for unfinished jobs....
make[1]: *** write jobserver: Bad file descriptor.  Stop.
make: *** [build_crypto] Error 1
opparaoppara

-j8 オプションを外して実行

# ./config --prefix=/usr/local/openssl-0.9.8 && make && make install_sw
# /usr/local/openssl-0.9.8/bin/openssl version
OpenSSL 0.9.8x 10 May 2012
opparaoppara

PHPの configure

# cd /opt
# tar xvf php-4.4.9.tar.bz2
# cd php-4.4.9
# sed -i 's|$i/lib/|$i/lib64/|g' configure
# ./configure \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--with-apxs2=/usr/sbin/apxs \
--with-pgsql=/usr/lib64/pgsql \
--enable-mbstring \
--enable-pcntl \
--enable-mbregex \
--enable-mbstr-enc-trans \
--without-mysql \
--with-gd \
--with-dom \
--with-zlib-dir=/usr \
--enable-gd-native-ttf \
--with-freetype-dir=/usr \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-iconv \
--with-curl \
--enable-versioning \
--enable-dbx \
--with-emoji \
--with-authcheck \
--enable-ftp \
--with-openssl=/usr/local/openssl-0.9.8 \
--with-openssl-dir=/usr/local/openssl-0.9.8 \
--enable-zip
opparaoppara
Configuring extensions
checking for OpenSSL support... yes
checking for Kerberos support... no
checking for pkg-config... /usr/bin/pkg-config
configure: error: Cannot find OpenSSL's libraries

ぐぬぬ。

opparaoppara

openssl-0.9.8 は不要っぽい。
openssl-devel がインストール済み、かつ PHP の openssl のソースを変更して対応可能

このスクラップは2025/02/01にクローズされました