在 Alpine Linux 存储库中,只有每个软件包的最新版本可用。旧的软件包版本被丢弃,一旦它们被丢弃,它们就不能再使用apk 安装。因此,与 Ubuntu 不同,Alpine 存储库中的每个主要 PHP 版本(5、7、8)不超过一个 PHP 版本。
但是,您可以轻松地混合使用 PHP 5、7 和 8(如果您不介意特定的次要版本)。
在 Alpine 3.13 上,包 php7 和 php8 可用(在撰写本文时版本为 7.4.15-r0 和 8.0.2-r0)。它们可以安装:
apk --update --no-cache add php7 php8
此外,php5 软件包在 Alpine 3.13 中不可用,但您可以尝试从仍然可用的 Alpine 3.8 安装(版本 5.6.40-r0):
apk add --update --no-cache php5 libressl2.7-libcrypto --repository=http://dl-cdn.alpinelinux.org/alpine/v3.8/community --repository=http://dl-cdn.alpinelinux.org/alpine/v3.8/main
(libressl2.7-libcrypto 是php5 的要求,可在v3.8/main 存储库中找到)。
把它放在一起,Alpine 3.13 图像与 PHP 5、7 和 8:
$ sudo docker run -it alpine:3.13
/ # apk --update --no-cache add php7 php8
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz
(1/11) Installing php7-common (7.4.15-r0)
(2/11) Installing argon2-libs (20190702-r1)
(3/11) Installing ncurses-terminfo-base (6.2_p20210109-r0)
(4/11) Installing ncurses-libs (6.2_p20210109-r0)
(5/11) Installing libedit (20191231.3.1-r1)
(6/11) Installing pcre2 (10.36-r0)
(7/11) Installing xz-libs (5.2.5-r0)
(8/11) Installing libxml2 (2.9.10-r6)
(9/11) Installing php7 (7.4.15-r0)
(10/11) Installing php8-common (8.0.2-r0)
(11/11) Installing php8 (8.0.2-r0)
Executing busybox-1.32.1-r0.trigger
OK: 18 MiB in 25 packages
/ #
/ # apk add --update --no-cache php5 libressl2.7-libcrypto --repository=http://dl-cdn.alpinelinux.org/alpine/v3.8/commun
ity --repository=http://dl-cdn.alpinelinux.org/alpine/v3.8/main
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz
(1/6) Installing libressl2.7-libcrypto (2.7.5-r0)
(2/6) Installing php5-common (5.6.40-r0)
(3/6) Installing pcre (8.44-r0)
(4/6) Installing readline (7.0.003-r0)
(5/6) Installing php5-cli (5.6.40-r0)
(6/6) Installing php5 (5.6.40-r0)
Executing busybox-1.32.1-r0.trigger
OK: 29 MiB in 31 packages
/ #
/ # php5 --version
PHP 5.6.40 (cli) (built: Jan 16 2019 23:59:17)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
/ #
/ # php7 --version
PHP 7.4.15 (cli) (built: Feb 4 2021 20:58:13) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
/ #
/ # php8 --version
PHP 8.0.2 (cli) (built: Feb 5 2021 00:39:11) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.2, Copyright (c) Zend Technologies
可以按照建议从源代码构建 PHP,但这是一个困难且冗长的过程,如果构建或环境配置不正确,您最终可能会得到不可靠的二进制文件。作为参考,您可以在此处找到在 Ubuntu 上构建 PHP 7.4 的说明:
https://github.com/gitKearney/php7-from-scratch。