ไม่สามารถติดตั้ง php5 บน Ubuntu 16.04


53

ดังนั้นเมื่อเร็ว ๆ นี้ฉันได้ติดตั้ง Ubuntu เครื่องแรกของฉันเพื่อความแม่นยำสร้างรายวันที่ 16.04 บนแล็ปท็อปเครื่องใหม่ของฉันเนื่องจากฮาร์ดแวร์ใหม่สำหรับ 15.10 ตอนนี้ฉันกำลังตั้งค่าและฉันต้องการติดตั้ง php5 และส่วนขยายบางอย่าง

เมื่อฉันรันsudo apt-get install libapache2-mod-php5ฉันได้รับข้อความแสดงข้อผิดพลาดว่าไม่มีแพ็คเกจการติดตั้งสำหรับ php5 และ libapache2

ข้อความแสดงข้อผิดพลาดเป็นภาษาเยอรมันดังนั้นฉันสงสัยว่านี่จะช่วยได้ แต่ยังไงก็ตามที่นี่เป็น :-) E: For package »libapache2-mod-php5« existiert kein Installationskandidat.

ฉันจำเป็นต้องเพิ่มที่เก็บ apt-get หรือไม่? หรือฉันทำอะไรผิด



คำตอบ:


76

TL; DR: ถ้าคุณต้องการอยู่กับ php5 คุณจะต้องอยู่ที่ Ubuntu 14.04 LTS

ใช้ PHP 7.0 บน Ubuntu 16.04 LTS

Ubuntu 16.04 ได้เปลี่ยนเป็น PHP 7.0 ด้วยโครงสร้างพื้นฐานใหม่สำหรับแพ็คเกจ PHP ดังนั้นไม่คุณไม่สามารถติดตั้ง php5 บน Ubuntu 16.04 แต่คุณสามารถติดตั้งแพ็คเกจ PHP 7.0 ด้วย:

apt-get install libapache2-mod-php

ที่จะติดตั้งแพ็คเกจเสมือนที่ขึ้นอยู่กับเวอร์ชัน PHP ล่าสุดและดึงlibapache2-mod-php7.0เป็นการอ้างอิง

หากคุณกำลังมองหาส่วนขยายให้ใช้ตัวแปรรุ่นที่น้อยกว่าเสมอ (เช่นphp-apcuแทนphp7.0-apcu) เนื่องจากส่วนขยาย PECL ได้รับการจัดทำแพคเกจโดยไม่มีรุ่นเพื่อให้สามารถอัปเกรดได้อย่างราบรื่น

ใช้ PHP PPA เพื่อติดตั้ง PHP 5.6 กับ PHP 7.0

มีตัวเลือกให้ติดตั้งแพ็คเกจ PHP 5.6 ppa:ondrej/phpร่วมกัน

สำหรับข้อมูลเพิ่มเติมโปรดดูคำตอบนั้น: https://askubuntu.com/a/762161/309221

สกัดจากลิงค์ด้านบน:

สมมติว่าlibapache2-mod-phpเป็นวิธีที่เหมาะสมในการเปิดใช้งาน PHP ใน Apache สำหรับคุณคุณสามารถดำเนินการต่อด้วยวิธีนี้:

sudo add-apt-repository ppa:ondrej/php

sudo apt-get update

sudo apt-get install php7.0 php5.6 php5.6-mysql php-gettext php5.6-mbstring php-xdebug libapache2-mod-php5.6 libapache2-mod-php7.0

สลับรุ่น PHP (Apache):

  • จาก php5.6 ถึง php7.0:
    sudo a2dismod php5.6 ; sudo a2enmod php7.0 ; sudo service apache2 restart

  • จาก php7.0 ถึง php5.6:
    sudo a2dismod php7.0 ; sudo a2enmod php5.6 ; sudo service apache2 restart


2
ไม่ไม่มีแพ็คเกจ PHP 5.x ในที่เก็บ Xenial เฉพาะใน PPA
oerdnj

ดูเหมือนว่าคุณพูดถูก: bugs.launchpad.net/ubuntu/+source/php5/+bug/1522422
NoBugs

เมื่อฉันเปลี่ยนเป็น php5.6 ฉันพบข้อผิดพลาด "งานสำหรับ apache2.service ล้มเหลวเนื่องจากกระบวนการควบคุมออกด้วยรหัสข้อผิดพลาดโปรดดู" systemctl status apache2.service "และ" journalctl -xe "เพื่อดูรายละเอียด"
lyhong

และวารสารพูดว่าอย่างไร?
oerdnj

พบบางสิ่งเช่นนี้ apache2: ข้อผิดพลาดทางไวยากรณ์ที่บรรทัดที่ 140 ของ /etc/apache2/apache2.conf: ข้อผิดพลาดทางไวยากรณ์ในบรรทัดที่ 3 ของ / e
lyhong

25

แก้ไข: คำตอบที่ยอมรับไม่ได้บอกวิธีการติดตั้ง PHP 5.6 และ 7.0 อย่างชัดเจนดังนั้นฉันจึงต้องการที่จะขยาย

สำหรับข้อมูลเพิ่มเติมโปรดดูคำตอบนั้น: https://askubuntu.com/a/762161/309221

สกัดจากลิงค์ด้านบน:

สมมติว่าlibapache2-mod-phpเป็นวิธีที่เหมาะสมในการเปิดใช้งาน PHP ใน Apache สำหรับคุณคุณสามารถดำเนินการต่อด้วยวิธีนี้:

sudo add-apt-repository ppa:ondrej/php

sudo apt-get update

sudo apt-get install php7.0 php5.6 php5.6-mysql php-gettext php5.6-mbstring php-xdebug libapache2-mod-php5.6 libapache2-mod-php7.0

สลับรุ่น PHP (Apache):

  • จาก php5.6 ถึง php7.0:
    sudo a2dismod php5.6 ; sudo a2enmod php7.0 ; sudo service apache2 restart

  • จาก php7.0 ถึง php5.6:
    sudo a2dismod php7.0 ; sudo a2enmod php5.6 ; sudo service apache2 restart


1
FYI: PPA ที่คุณใช้นั้นได้รับการดูแลโดยบุคคลที่เขียนคำตอบที่ยอมรับได้ และบรรทัดสุดท้ายในคำตอบนั้น: "มีตัวเลือกในการติดตั้งแพ็คเกจ PHP 5.6 โดยใช้ ppa: ondrej / php" โปรดทราบว่าคุณไม่ได้ติดตั้งแพ็คเกจ php5 ด้วยเช่นกัน แต่ php5.6
muru

1
มีจำนวนของความแตกต่างในบรรจุภัณฑ์และตำแหน่งของไฟล์กำหนดค่าที่ทุกคนมองหาแพ็คเกจ php5 เก่าจะแปลกใจในใหม่
muru

ฉันได้แก้ไขคำตอบแล้วดังนั้นจึงไม่ได้กล่าวว่าคำตอบที่ยอมรับนั้นไม่ถูกต้อง แต่ขยายออกไปเท่านั้น
FlavioEscobar

@NoBugs มันมีชุดส่วนขยายของ imagick โปรดหยุดการพ่นสิ่งต่าง ๆ โดยไม่มีการตรวจสอบขั้นพื้นฐานอย่างน้อยไม่ว่าจะเป็นเรื่องจริงหรือไม่ก็ตาม
oerdnj

@FlavioEscobar ฉันได้รวมการแก้ไขของคุณเข้ากับคำตอบของฉัน ขอบคุณสำหรับการขยายคำตอบ
oerdnj
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.