设置 Ubuntu 16.04 虚拟主机时,Apache 将使用 PHP 7.0.22-2+ubuntu16.04.1+deb.sury.org+4。
但是,在尝试通过执行apt-get dist-upgrade(并且失败)来解决一些冲突之后,我最终得到了一个严重损坏的系统。我已经设法将大多数软件包版本回滚到默认版本,但 Apache 使用
PHP 7.1.8-2+ubuntu16.04.1+deb.sury.org+4,这与我需要的一些 PHP 库不兼容。
到目前为止,我已经尝试过:
sudo a2dismod php7.1
sudo a2enmod php7.0
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)
但是,这会破坏 Apache 并拒绝重新启动:
Syntax error on line 140 of /etc/apache2/apache2.conf: Syntax error on line 3 of /etc/apache2/mods-enabled/php7.0.load: Cannot load /usr/lib/apache2/modules/libphp7.0.so
Run Code Online (Sandbox Code Playgroud)
如何让 Apache 再次运行默认的 PHP 版本 (PHP 7.0)?
编辑:Dan下面对我的 [现已编辑] 自我回答的评论 让我意识到添加以下第三方 PPAppa:ondrej/php可能与问题有关。
所以:
我已将 PPA 添加ppa:ondrej/php到我的网站。
Dan*_*Dan 10
我将把我的答案分成两部分。第一部分描述您的问题是如何发生的,第二部分是您问题的实际答案。
免责声明:我的大部分描述基本上都是猜测,因为我真的不知道你做了什么。但这是最有可能的情况,因为我想不出另一种最终会为您提供所描述问题的方法。
从您描述的问题来看,您似乎安装了第三方 PPA,该 PPA 在您的系统上安装了 PHP 7.1。最有可能的 PPA 是Ondrej 的 PPA。
当您第一次安装 PHP 时,您是通过以下方法安装的:
sudo apt install php
Run Code Online (Sandbox Code Playgroud)
该php包只是一个元包,不包含所需的二进制文件。这取决于可用 PHP 包的最新版本(默认为 7.0)。因此,当您安装它时,该php7.0软件包与php7.0的依赖项(libapache2-mod-php7.0
如果有apache2)一起安装,并且所有这些依赖项在软件包管理器中都标记为“自动安装”。
$ apt 显示 php 包: php 版本:1:7.0+35ubuntu6 优先级:可选 部分: php 来源:php-defaults (35ubuntu6) 产地:Ubuntu 维护者:Ubuntu 开发者 原始维护者:Debian PHP 维护者 错误:https://bugs.launchpad.net/ubuntu/+filebug 安装大小:11.3 kB 取决于:php7.0 支持:5年 下载大小:2,832 B APT-手动安装:是 APT 来源:http://archive.ubuntu.com/ubuntu xenial/main amd64 包 描述:服务器端,嵌入 HTML 的脚本语言(默认) PHP(PHP 的递归首字母缩写词:超文本预处理器)是一种广泛使用的 特别适合的开源通用脚本语言 用于 Web 开发,并且可以嵌入到 HTML 中。 . 这个包是一个依赖包,依赖于Debian的默认 PHP 版本(目前为 7.0)。
我将命令结果的部分加粗,这解释了我刚才提到的内容。
Ondrej 的 PHP PPA 提供了多个可以相互安装的 PHP 版本。因此,当您将它添加到您的系统时,apt发现了一个更新版本的 PHP,因此它替换了php7.0*php7.1以及自动安装的任何相关软件包。
有两种方法可以解决您的问题。
完全删除第 3 方 PPA,并恢复到默认的 PHP 包
sudo apt install ppa-purge
sudo ppa-purge ppa:ondrej/php
Run Code Online (Sandbox Code Playgroud)Ondrej 的 PPA 提供多个版本的 PHP,因此您可以同时安装多个版本。但是您将只启用php7.0Apache 模块。
sudo apt install php7.0 libapache2-mod-php7.0
sudo a2dismod php7.1
sudo a2enmod php7.0
sudo apache2ctl restart
Run Code Online (Sandbox Code Playgroud)
以以前的方式安装它们会将php7.0软件包设置为“手动安装” apt,因此如果您不自行删除它们,它们将不会被自动删除。
不要忘记确保安装 php7.0 所需的任何 PHP 模块(如sudo apt install php7.0-mysql)
*php7.0如果您手动安装了专门用于 php7.0 的模块(例如php7.0-mysql),则可能已安装在您的系统中。
| 归档时间: |
|
| 查看次数: |
15160 次 |
| 最近记录: |