Closed15
PHP4 を Docker で動かす
以下、試してみたがベースイメージが古くてビルド出来ず
昔の実績 があるので debian 諦めて centos を使ってみる
% docker pull --platform linux/amd64 centos:6.9
% docker run --platform linux/amd64 --rm -it --name php4 centos:6.9 bash
# yum -y install vim
qemu: uncaught target signal 11 (Segmentation fault) - core dumped
Segmentation fault
ぐぬぬ
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 変えればいけそう
いけた
# 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!
openssl 関連でコケるのは分かっているので avafloww/docker-php4 の古い openssl を使ってみる。
(Qiita の記事は PHP のソースを変更している)
再度挑戦
% docker run --platform linux/amd64 --rm -it -v ./php-build:/opt/ --name php4 centos:6.9 bash
リポジトリの 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
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 がない。。。
# 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
-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
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
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
ぐぬぬ。
openssl-0.9.8 は不要っぽい。
openssl-devel がインストール済み、かつ PHP の openssl のソースを変更して対応可能
成果物
このスクラップは2025/02/01にクローズされました