在Ubuntu 17.04安装PHP 7.2时出现错误。

24
当我运行以下命令时,出现了这个错误。
sudo apt install php7.2 php7.2-common php7.2-cli php7.2-fpm   

正在读取状态信息...完成

E: Unable to locate package php7.2
E: Couldn't find any package by glob 'php7.2'
E: Couldn't find any package by regex 'php7.2'
E: Unable to locate package php7.2-common
E: Couldn't find any package by glob 'php7.2-common'
E: Couldn't find any package by regex 'php7.2-common'
E: Unable to locate package php7.2-cli
E: Couldn't find any package by glob 'php7.2-cli'
E: Couldn't find any package by regex 'php7.2-cli'
E: Unable to locate package php7.2-fpm
E: Couldn't find any package by glob 'php7.2-fpm'
E: Couldn't find any package by regex 'php7.2-fpm'

你可以看到这个:这个命令对我很有帮助: - M E S A B O
5个回答

48

要在Ubuntu 17上安装PHP7.2,您需要手动添加ondrej PPA

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php7.2

或者,通过从git存储库克隆源代码并检查您想要的版本,进行编译和安装

有关从源代码编译PHP的更多信息,请查看如何从源代码构建/编译PHP


你收到了什么响应?你确定 apt-get update 命令没有产生任何错误/警告吗? - hassan
可能是Ubuntu版本的问题。我之前在Ubuntu 16.04上成功安装了它,但现在我正在尝试在17.04上安装。 - rawathemant
1
读取软件包列表...完成 构建依赖树... 读取状态信息...完成 E: 无法找到软件包php7.2 E: 找不到任何与glob 'php7.2'匹配的软件包 E: 找不到任何与regex 'php7.2'匹配的软件包 - rawathemant
以下命令的输出是什么:grep -rn 'ondrej/php' /etc/apt/sources.list /etc/apt/sources.list.d/* - hassan
@hassan 我正在使用Vagrant的VM,在成功添加和更新存储库后遇到了相同的问题。这是我得到的错误: vagrant@vagrant-ubuntu-trusty-64:~$ sudo apt-get install php7.3 读取软件包列表... 完成 正在建立依赖关系树
正在读取状态信息... 完成 E: 无法定位软件包php7.3 E: 找不到任何与正则表达式'php7.3'匹配的软件包
- Mustapha GANGA
显示剩余5条评论

23
我遇到了类似的问题。这个页面帮助我解决了它。https://tecadmin.net/install-php-debian-9-stretch/ 具体来说,在安装php之前运行以下命令:
sudo apt install ca-certificates apt-transport-https
wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -
echo "deb https://packages.sury.org/php/ stretch main" | sudo tee /etc/apt/sources.list.d/php.list

挽救了我的生命。谢谢! - prazeev
在执行 apt-get update 时出现以下错误:W: Failed to fetch https://packages.sury.org/php/dists/stretch/main/binary-amd64/Packages gnutls_handshake() failed: Handshake failed - Vishwas Nahar
在Docker中使用Ubuntu 16.04镜像对我有效。记得在Dockerfile中删除sudo。 - Tarasovych

0

如果你遇到像 php7.2 php7.2-curl 没有可安装的候选项或找不到任何包或依赖项是 php7.2-commonlibcurl3,请执行以下操作。记得根据你的要求更改包名称。

你必须以成熟的方式解决问题。安装 aptitude 这个 Ubuntu 包管理器将找到所有依赖项,并逐个安装。

apt-get install aptitude

现在你需要检查aptitude是否可以下载它,如果可以下载,请按照说明进行操作。

sudo aptitude install php7.2-curl

如果您遇到类似这样的错误

E: Unable to locate package php7.2-curl
E: Couldn't find any package by glob 'php7.2-curl'

我不是在谈论正确的错误类型

尝试再次添加PHP包

sudo apt-add-repository ppa:ondrej/php

sudo apt-get update

现在尝试执行这个命令

sudo aptitude install php7.2-curl

Aptitude 会询问您是否要保留所有依赖项的当前版本

The following actions will resolve these dependencies:

     Keep the following packages at their current version:
1)     php7.2-curl [Not Installed]                        



Accept this solution? [Y/n/q/?]

输入n,然后按Enter

Aptitude会查找所有依赖项并要求您安装所有软件包类型。

y

再次

y

那么

systemctl restart apache2

适用于CentOS或RHEL

systemctl restart httpd

默认情况下不会启用PHP 7.2 FPM。 注意:要在Apache2中启用PHP 7.2 FPM,请执行以下操作

a2enmod proxy_fcgi setenvif

a2enconf php7.2-fpm

这个方法不仅适用于此错误,您可以使用aptitude找到任何php、apache2或ubuntu系统包的解决方案。

Upvote if you find your solution

0

在我的情况下,安装了更新的PHP(7.4),因此我只需将命令替换为7.4版本即可。

sudo apt install php7.4 php7.4-common php7.4-cli php7.4-fpm

要知道安装的 PHP 版本,请使用以下命令:

php --version

0
  1. 完全删除所有版本的PHP

    sudo apt-get purge 'php*' 
    
  2. 从未签名的存储库强制更新:

    在您的sources.list(位于/ etc / apt / sources.list)中添加此选项:

    deb [trusted=yes] https://deb.sury.org/ stretch main 
    
  3. 将当前软件包升级到最新版本:

    sudo apt update  
    
    sudo apt upgrade  
    
  4. 首先在系统上安装所需的软件包:

    sudo apt install ca-certificates apt-transport-https  
    

    然后导入软件包签名密钥:

    wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -  
    

    之后为您的系统配置PPA以获取PHP软件包:

    echo "deb https://packages.sury.org/php/ stretch main" | sudo tee /etc/apt/sources.list.d/php.list 
    
  5. 最后,使用以下其中一种选项安装所需的PHP:

    安装PHP 7.2

    sudo apt install php7.2-cli 
    

    安装PHP 7.1

    sudo apt install php7.1-cli 
    

为什么在更新之前要清除所有现有的 PHP?这只会引发麻烦。安装新版本,然后简单地切换到使用它。在您舒适地使用新版本之后再删除旧的 PHP。 - Tisch

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