GNU/Linux >> Belajar Linux >  >> Ubuntu

Bagaimana Agar Apache Menggunakan Php 7.0 (bukan 7.1)?

Saat menyiapkan vhost Ubuntu 16.04, Apache akan menggunakan
PHP 7.0.22-2+ubuntu16.04.1+deb.sury.org+4 .

Namun, setelah mencoba menyelesaikan beberapa konflik dengan melakukan apt-get dist-upgrade (dan gagal), saya berakhir dengan sistem yang rusak parah. Sejak itu saya berhasil mengembalikan sebagian besar versi paket ke versi default, tetapi Apache menggunakan
PHP 7.1.8-2+ubuntu16.04.1+deb.sury.org+4 , yang tidak kompatibel dengan beberapa library PHP yang saya butuhkan.

Sejauh ini, saya sudah mencoba:

sudo a2dismod php7.1
sudo a2enmod php7.0
sudo service apache2 restart

Namun, ini merusak Apache dan menolak untuk memulai ulang:

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

Bagaimana saya bisa membuat Apache menjalankan versi PHP default (PHP 7.0) lagi?

Sunting :Sebuah komentar untuk jawaban diri saya [sekarang disunting] di bawah oleh Dan membuat saya menyadari bahwa setelah menambahkan PPA pihak ketiga berikut ppa:ondrej/php mungkin ada hubungannya dengan masalah ini.

Jadi:
Saya telah menambahkan PPA ppa:ondrej/php ke situs saya.

Jawaban yang Diterima:

Saya akan membagi jawaban saya menjadi dua bagian. Bagian pertama menjelaskan bagaimana masalah Anda terjadi, bagian kedua adalah jawaban sebenarnya untuk masalah Anda.

Deskripsi

Dari masalah yang Anda jelaskan, tampaknya Anda telah menginstal PPA pihak ketiga yang menginstal PHP 7.1 di sistem Anda. PPA yang paling mungkin adalah PPA Ondrej.

Saat pertama kali menginstal PHP, Anda menginstal dengan metode berikut:

sudo apt install php

php paket hanya paket meta dan tidak mengandung binari yang dibutuhkan. Itu tergantung pada versi terbaru dari paket PHP yang tersedia (secara default 7.0). Jadi ketika Anda menginstalnya, php7.0 paket diinstal bersama dengan php7.0 dependensi (dan libapache2-mod-php7.0 jika Anda memiliki apache2 ) dan semua dependensi tersebut ditandai di pengelola paket sebagai “diinstal secara otomatis”.

$ 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).

Saya menebalkan bagian-bagian dari hasil perintah, yang menjelaskan apa yang baru saja saya sebutkan.

Terkait:Login Jarak Jauh Dengan Graphical Display Manager (Gdm, Lightdm) Di Ubuntu?

PHP PPA Ondrej menawarkan beberapa versi PHP yang dapat diinstal bersama-sama. Jadi ketika Anda menambahkannya ke sistem Anda, apt menemukan versi PHP yang lebih baru sehingga menggantikan php7.0 * dengan php7.1 bersama dengan paket terkait yang diinstal secara otomatis.

Jawab

Ada dua metode untuk memperbaiki masalah Anda.

  1. Hapus sepenuhnya PPA pihak ke-3, dan kembalikan ke paket PHP default

    sudo apt install ppa-purge
    sudo ppa-purge ppa:ondrej/php
    
  2. PPA Ondrej menawarkan beberapa versi PHP, sehingga Anda dapat menginstal lebih dari satu versi secara berdampingan. Tetapi Anda hanya akan mengaktifkan php7.0 Modul Apache.

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

    Menginstalnya dengan cara sebelumnya akan mengatur php7.0 paket sebagai "diinstal secara manual" di apt , jadi mereka tidak akan dihapus secara otomatis tanpa Anda menghapusnya sendiri. Jangan lupa untuk memastikan juga menginstal modul PHP yang Anda perlukan untuk php7.0 (Seperti sudo apt install php7.0-mysql )

* php7.0 mungkin telah disimpan di sistem Anda jika Anda telah menginstal modul secara manual khusus untuk php7.0 (misalnya php7.0-mysql ).


Ubuntu
  1. Bagaimana cara menggunakan API Jaringan E2E?

  2. Cara Menginstal Apache, MySQL, PHP (LAMP) di Ubuntu 16.04 LTS

  3. Apache 2 Tidak Dapat Mengikat, Alamat Sudah Digunakan?

  1. Cara memaksa Apache untuk menggunakan HTTPS

  2. Bagaimana Cara Menginstal Php Tanpa Server Web Apache?

  3. Cara mendapatkan versi MySQL/Apache/PHP

  1. Cara Menginstal dan Menggunakan Komposer PHP di Ubuntu 16.04

  2. Cara Menginstal dan Menggunakan Komposer PHP di Ubuntu 18.04

  3. Cara menggunakan EasyApache 3 dengan WHM/cPanel