GNU/Linux >> Linux の 問題 >  >> Ubuntu

ApacheにPhp7.0(7.1ではない)を使用させる方法は?

Ubuntu 16.04 vhostをセットアップする場合、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

ただし、これにより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

ApacheにデフォルトのPHPバージョン(PHP 7.0)を再度実行させるにはどうすればよいですか?

編集 Danによる以下の[現在編集中の]自己回答へのコメント 次のサードパーティのPPAppa:ondrej/phpを追加したことに気づきました 問題と関係があるかもしれません。

だから:
私はPPA ppa:ondrej/phpを追加しました 私のサイトへ。

承認された回答:

答えを2つに分けます。最初の部分は問題がどのように発生したかを説明し、2番目の部分は問題に対する実際の答えです。

説明

あなたが説明する問題から、あなたはあなたのシステムにPHP7.1をインストールしたサードパーティのPPAをインストールしたようです。最も可能性の高いPPAはOndrejのPPAです。

PHPを最初にインストールしたときは、次の方法でインストールしました。

sudo apt install php

php パッケージは単なるメタパッケージであり、必要なバイナリは含まれていません。これは、利用可能なPHPパッケージの最新バージョン(デフォルトでは7.0)によって異なります。したがって、インストールすると、php7.0 パッケージはphp7.0と一緒にインストールされます の依存関係(およびlibapache2-mod-php7.0 apache2をお持ちの場合 )およびこれらの依存関係はすべて、パッケージマネージャーで「自動的にインストールされた」とマークされます。

$ apt show php
Package: php
Version: 1:7.0+35ubuntu6
Priority: optional
Section: php
Source: php-defaults (35ubuntu6)
Origin: Ubuntu
Maintainer: Ubuntu Developers 
Original-Maintainer: Debian PHP Maintainers 
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 11.3 kB
Depends: php7.0
Supported: 5y
Download-Size: 2,832 B
APT-Manual-Installed: yes
APT-Sources: http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages
Description: server-side, HTML-embedded scripting language (default)
 PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
 open source general-purpose scripting language that is especially suited
 for web development and can be embedded into HTML.
 .
 This package is a dependency package, which depends on Debian's default
 PHP version (currently 7.0).

コマンドの結果の一部を太字にしました。これは、今述べたことを説明しています。

関連:Ubuntuのグラフィカルディスプレイマネージャー(Gdm、Lightdm)を使用したリモートログイン?

OndrejのPHPPPAは、互いに並行してインストールできる複数のPHPバージョンを提供します。したがって、システムに追加した場合は、apt 新しいバージョンのPHPが見つかったため、php7.0を置き換えました * php7.1を使用 自動的にインストールされた関連パッケージと一緒に。

回答

問題を解決するには2つの方法があります。

  1. サードパーティのPPAを完全に削除し、デフォルトのPHPパッケージに戻します

    sudo apt install ppa-purge
    sudo ppa-purge ppa:ondrej/php
    
  2. OndrejのPPAは複数のバージョンのPHPを提供しているため、複数のバージョンを並べてインストールできます。ただし、有効にするのはphp7.0のみです。 Apacheモジュール。

    sudo apt install php7.0 libapache2-mod-php7.0
    sudo a2dismod php7.1
    sudo a2enmod php7.0
    sudo apache2ctl restart
    

    以前の方法でそれらをインストールすると、php7.0が設定されます aptに「手動でインストール」されたパッケージ 、したがって、自分で削除しない限り、自動的に削除されることはありません。 php7.0に必要なPHPモジュールも必ずインストールしてください(sudo apt install php7.0-mysqlのように) )

* php7.0 php7.0専用のモジュール(たとえば、php7.0-mysql)を手動でインストールした場合は、インストールされたシステムに保持されている可能性があります。 。


Ubuntu
  1. E2EネットワークAPIの使用方法は?

  2. Ubuntu 16.04 LTSにApache、MySQL、PHP(LAMP)をインストールする方法

  3. Apache 2はバインドできませんでした、アドレスはすでに使用されていますか?

  1. ApacheにHTTPSを使用させる方法

  2. Apache WebサーバーなしでPHPをインストールする方法は?

  3. MySQL / Apache/PHPバージョンを取得する方法

  1. Ubuntu16.04にPHPComposerをインストールして使用する方法

  2. Ubuntu18.04にPHPComposerをインストールして使用する方法

  3. EasyApache3をWHM/cPanelで使用する方法