在Ubuntu 16.04上安装PHP7.4 - Dockerfile

3

我正在尝试使用以下命令安装php7.4及相关软件包:

FROM ubuntu:16.04
RUN apt update \
    && apt install -y software-properties-common\
    && add-apt-repository ppa:ondrej/php \
    && apt-get update \
    && apt-get install -y php7.4

我收到了以下信息

Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package php7.4
E: Couldn't find any package by glob 'php7.4'
E: Couldn't find any package by regex 'php7.4'

在搜索时

apt-cache search php7

我发现只有与7.0相关的软件包可用。

php7.0 - server-side, HTML-embedded scripting language (metapackage)
php7.0-cgi - server-side, HTML-embedded scripting language (CGI binary)
php7.0-cli - command-line interpreter for the PHP scripting language
php7.0-common - documentation, examples and common module for PHP
php7.0-curl - CURL module for PHP

我很困惑为什么我没有得到新版本,如7.3、7.4和8应该是今天唯一可用的版本。我怎样才能获取php7.4软件包?


为什么不使用现成的PHP Docker镜像?https://hub.docker.com/_/php - Zoli Szabó
感谢您的评论。这是一个实时应用程序,因此我不想更改整个Dockerfile以升级到PHP7.4。上述Dockerfile仅简化了PHP安装。 - Asha
在16.04上,apt search php7 只显示7.0版本的软件包,无法获取7.4版本。 - Hans Kilian
3个回答

2

TL;DR:自Ubuntu 16.04到达“标准支持结束”状态后,PPA中的软件包已被删除。


你可能需要阅读这篇文章:https://github.com/oerdnj/deb.sury.org/issues/1567

2021年4月,Ubuntu 16.04 Xenial将到达标准支持结束(EoL/EoSS),之后只能通过Ubuntu扩展安全维护计划进行付费获取。

对于DEB.SURY.ORG PPA意味着什么?

  • 在EoL/EoSS宣布后不久,通常与下一个PHP版本发布同时,将删除适用于Ubuntu 16.04的软件包,因为无法再构建这些软件包。

  • 适用于Ubuntu 16.04的软件包将通过Freexian付费计划的PHP LTS提供。这比之前宣布的私人专用仓库更便宜。


感谢您提供这些信息。如我所料,16.04已从ppa中删除,根据Ubuntu网站的信息,16.04尚未到达其生命周期的结束。 不确定这对ppa软件包有何影响。https://wiki.ubuntu.com/Releases - Asha
是的,你说得对。它不是EOL,而是“标准支持结束”。Ubuntu 16.04现在处于ESM期间(https://ubuntu.com/security/esm)。我已经相应地更新了我的答案。 - Zoli Szabó

-1

FROM ubuntu:20.04
RUN apt-get update
RUN apt-get install -y wget tar make
RUN wget https://www.php.net/distributions/php-7.4.33.tar.gz --no-check-certificate
RUN tar xzf php-7.4.33.tar.gz
RUN cd php-7.4.33
RUN apt-get update
RUN apt-get --assume-yes install gcc
RUN apt-get -y install expect
RUN apt-get -y install pkg-config
RUN apt-get --assume-yes install -y libsqlite3-dev
RUN apt-get --assume-yes install -y libxml2-dev
RUN ./php-7.4.33/configure
RUN make
RUN make install

CMD ["/bin/bash"]


1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

-4

在Ubuntu 20.04上安装PHP 7.4

注意:Ubuntu 20.04的上游存储库中已经预装了PHP 7.4。只需使用apt软件包管理器安装它和您需要的扩展即可。

sudo apt update
sudo apt install php php-cli php-fpm php-json php-common php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath

确认 PHP 版本:

$ php --version
PHP 7.4.3 (cli) (built: Mar 26 2020 20:24:23) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

在Ubuntu 18.04/16.04上安装PHP 7.4

步骤1:添加PHP PPA存储库 我们将添加ppa:ondrej/php PPA存储库,其中包含PHP的最新构建软件包。

sudo apt-get update
sudo apt -y install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update

步骤2:在Ubuntu 18.04/19.04/16.04上安装PHP 7.4 使用以下命令在Ubuntu 18.04/19.04/16.04上安装PHP 7.4:

sudo apt -y install php7.4

检查已安装的版本:

$ php -v
PHP 7.4.0beta4 (cli) (built: Aug 28 2019 11:41:49) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0-dev, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.0beta4, Copyright (c), by Zend Technologies

使用以下命令安装额外的软件包:
sudo apt-get install php7.4-xxx

例子:

sudo apt-get install -y php7.4-{bcmath,bz2,intl,gd,mbstring,mysql,zip,common}

Apache相关的PHP配置存储在/etc/php/7.4/apache2/php.ini中。

希望我的经验能帮助到大家。


1
请恕我直言,这并非您的经验,而是从另一个网站复制粘贴的内容 :) - Zoli Szabó
1
我同意@ZoliSzabó的观点。这是一个标准回答,针对在Ubuntu上安装PHP而不理解实际问题的任何相关内容。 - Asha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接