【问题标题】:Run multiple PHP versions in Alpine Linux在 Alpine Linux 中运行多个 PHP 版本
【发布时间】:2020-09-22 07:43:25
【问题描述】:

是否可以在 Alpine Linux 系统中直接运行多个版本的 PHP?喜欢同时使用php 5.6、7.0和7.4?

在 ubuntu 中,这可以正常工作,没有任何问题。例如,这可以通过使用 ppa 存储库来完成。之后可以通过 apt 包管理器轻松安装不同的 PHP 版本。

add-apt-repository ppa:ondrej/php
apt-get update
apt-get install php5.6
apt-get install php7.0
apt-get install php7.4

有没有办法在 Alpine 上做到这一点?

【问题讨论】:

  • 我想你可以尝试从源代码编译每个版本。

标签: php alpine


【解决方案1】:

在 Alpine Linux 存储库中,只有每个软件包的最新版本可用。旧的软件包版本被丢弃,一旦它们被丢弃,它们就不能再使用apk 安装。因此,与 Ubuntu 不同,Alpine 存储库中的每个主要 PHP 版本(5、7、8)不超过一个 PHP 版本。

但是,您可以轻松地混合使用 PHP 5、7 和 8(如果您不介意特定的次要版本)。
在 Alpine 3.13 上,包 php7php8 可用(在撰写本文时版本为 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-libcryptophp5 的要求,可在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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 2018-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多