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つの方法があります。
-
サードパーティのPPAを完全に削除し、デフォルトのPHPパッケージに戻します
sudo apt install ppa-purge sudo ppa-purge ppa:ondrej/php
-
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
)を手動でインストールした場合は、インストールされたシステムに保持されている可能性があります。 。