Câu hỏi Làm thế nào tôi có thể hạ cấp từ PHP 7 xuống PHP 5.6 trên Ubuntu 16.04? [bản sao]


Câu hỏi này đã có câu trả lời ở đây:

Tôi đang cố gắng để hoàn nguyên phiên bản PHP của tôi đến 5,6 từ 7 và mặc dù tôi đã gỡ bỏ PHP 7 và sau đó cài đặt PHP 5.6 Tôi vẫn có vẻ đang chạy phiên bản 7.

Có một phương pháp đơn giản để di chuyển thông qua các phiên bản PHP, nơi apache, phpMyAdmin và đồng được cấu hình một cách thích hợp?

Một cách đơn giản để thay đổi phiên bản hiện tại của PHP ngay lập tức và ngay cả trang web theo trang web sẽ là tuyệt vời.


157
2018-04-24 09:21


gốc


Tôi xuất hiện để có 5.6 cài đặt nhưng tất cả php của tôi là rendering như văn bản bây giờ. - dibs
đầu ra của dpkg -l | grep php| awk '{print $2}' |tr "\n" " " ? - storm
dh-php libapache2-mod-php5 php-phổ biến php-json php-lê php-xml php5-cli php5-common php5-json php5-readline php5.6 php5.6-bz2 php5.6-cli php5.6-common php5.6-curl php5.6-dev php5.6-fpm php5.6-gd php5.6-json php5.6-mcrypt php5.6-mysql php5.6-opcache php5.6-readline php7.0-common php7.0-json php7.0-xml pkg-php-tools - dibs
Tôi thấy một số gói php7 có loại bỏ chúng với aptitude purge php7.0-common php7.0-json php7.0-xml  tôi cũng muốn biết ý bạn là gì all my php is rendering as text now - storm
nó có nghĩa là bạn bỏ lỡ libapache2-mod-php5.6 gói ... xem câu trả lời của tôi dưới đây, bạn không cần phải loại bỏ php7.0 - Postadelmaga


Các câu trả lời:


Cập nhật
Hôm nay tôi gặp vấn đề với PHP 7 chạy mặc dù tôi đã vô hiệu hóa php7.0 mô-đun apache: phpinfo đang hiển thị php 7 bằng fastCGI ...
... Vì vậy, nếu sau khi bạn làm theo các hướng dẫn bên dưới, bạn phải đối mặt với tình huống này, bạn có thể cần phải tắt proxy_fcgi mô-đun apache:

sudo a2dismod proxy_fcgi proxy; sudo service apache2 restart

1. Cài đặt lại PHP 5.6 

Những gì làm việc cho tôi là hướng dẫn này: http://www.lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu

Trên thực tế không bắt buộc phải xóa php7.0, bạn có thể cài đặt php5.6 cùng nhau (cũng bởi vì bạn sẽ có vấn đề phụ thuộc với phpmyadmin gói yêu cầu php7.0)

Giả định libapache2-mod-php là một cách phù hợp để kích hoạt PHP trong Apache cho bạn, bạn có thể tiến hành theo cách này:

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-mbstring php7.0-mbstring php-xdebug libapache2-mod-php5.6 libapache2-mod-php7.0

2. Chuyển đổi phiên bản PHP:

  • Từ php5.6 đến php7.0:

    • Apache:

      sudo a2dismod php5.6 ; sudo a2enmod php7.0 ; sudo service apache2 restart
      
    • CLI:

      sudo update-alternatives --set php /usr/bin/php7.0
      
  • Từ php7.0 đến php5.6:

    • Apache:

      sudo a2dismod php7.0 ; sudo a2enmod php5.6 ; sudo service apache2 restart
      
    • CLI:

      sudo update-alternatives --set php /usr/bin/php5.6
      

296
2018-04-25 02:58



bạn đã đúng, cảm ơn, tôi đã sửa các lệnh :) - Postadelmaga
@Postadelmaga Nó hoạt động để thay đổi phiên bản PHP cho các ứng dụng web. Cảm ơn rất nhiều! Nhưng CLI vẫn chạy PHP7. Bạn có biết cách chuyển nó sang PHP5.6 không? - John Linhart
Cách tốt nhất để làm điều đó là xóa gói phần mềm php, thêm Ondrej ppa và sau đó cài đặt php7 và php5.6, nhớ bạn có phpenmod -v 5.6 để bật mô-đun php5.6 và phpenmod -v 7.0 để bật mô-đun php 7.0, thêm thông tin tại đây disqus.com/home/discussion/serversforhackers/… - razor7
Bài đăng đã lưu ngày của tôi. - Shoaib Nawaz
@ Daenu rằng vì php-v sẽ hiển thị cho bạn phiên bản php cli ... lệnh được đề xuất là dành cho Apache ... nếu bạn thực hiện phpinfo() trong một trang web, bạn sẽ thấy sự khác biệt. - Postadelmaga


Ubuntu 16.04 đi kèm với php 7.0, và một số php ứng dụng có thể vẫn không thành công php 7.0 Vì vậy, trong một số trường hợp, nó có thể hợp lý để có cả hai php 7.0 và php 5.x, để bạn có thể chọn phiên bản nào sẽ sử dụng cho nhu cầu của mình bất cứ lúc nào.

Bạn có thể làm như vậy với:

xavi@computer# sudo su
root@computer# add-apt-repository ppa:ondrej/php
root@computer# apt-get update
root@computer# 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 php5.6-curl php5.6-gd php5.6-mcrypt php5.6-xml php5.6-xmlrpc

Cài đặt cả hai php5.6 & php7.0 sạch sẽ trong trường hợp của tôi: không phàn nàn về các vấn đề, v.v.

Để chuyển từ php 5.6 đến php 7.0 bạn cần phải làm hai việc:

# For php in web apps
sudo a2dismod php5.6 && sudo a2enmod php7.0 && sudo service apache2 restart
# For php-cli in the command line
sudo ln -sfn /usr/bin/php7.0 /etc/alternatives/php

hoặc từ php7.0 đến php5.6:

# For php in web apps
sudo a2dismod php7.0 && sudo a2enmod php5.6 && sudo service apache2 restart
# For php-cli in the command line
sudo ln -sfn /usr/bin/php5.6 /etc/alternatives/php

Bạn cũng có thể nhanh chóng kiểm tra xem máy tính của bạn đang sử dụng bằng cách chạy php -v.


48
2018-05-02 09:29



Sử dụng sudo a2dismod php7.0 && sudo a2enmod php5.6 && sudo service apache2 restart để đảm bảo các lệnh sau chỉ chạy khi lệnh trước thành công. Đề xuất chỉnh sửa cho câu trả lời này. - Videonauth
Đây là câu trả lời tốt nhất cho những người sẵn sàng cài đặt cả hai php5.6 và php7.0 trên ubuntu 16.04 - Amine Jallouli
Làm việc như người ở. Tôi ước tôi có thể upvote nó nhiều lần. - shiva


Câu hỏi của bạn thiếu các chi tiết quan trọng, vì vậy tôi sẽ trả lời rộng rãi hơn.

Giả sử bạn đang sử dụng các gói, có một số chi tiết quan trọng:

  1. Apache2 có thể được cấu hình để sử dụng apache2 SAPI sử dụng libapache2-mod-php7.0 gói hoặc FPM SAPI sử dụng php7.0-fpm với mod_proxy_fcgi.

  2. Ubuntu 16.04 chỉ có PHP 7.0 trong kho, bạn có thể sử dụng ppa:ondrej/php để thêm hỗ trợ cho PHP 5.6 bằng cách sử dụng lược đồ đặt tên tương tự (ví dụ: libapache2-mod-php5.6 hoặc là php5.6-fpm).

  3. Nếu bạn đang sử dụng Apache2 SAPI (libapache2-mod-php*), bạn cần tắt PHP 7.0 sau khi cài đặt libapache2-mod-php5.6 bằng cách chạy a2dismod php7.0 và bật PHP 5.6 bằng cách chạy a2enmod php5.6.

  4. Nếu bạn đang sử dụng FPM SAPI (php*-fpm) sau đó bạn cần thay đổi FPM unix socket từ /run/php/php7.0-fpm.sock đến /run/php/php5.6-fpm.sock.

  5. Hãy nhớ rằng đối với các mô-đun đi kèm với PHP (như MySQL) quy ước đặt tên là phpX.Y-<ext> (f.e. php7.0-mysql và php5.6-mysql), nhưng đối với các mô-đun PECL bên ngoài (ví dụ: APCu, mongodb, ...) php-<ext> (f.e. php-apcu, php-mongodb). Tôi khuyên bạn nên chạy apt-cache search php <ext> trên hệ thống của bạn để tìm kiếm tên gói chính xác trước khi đặt câu hỏi trên Internet.


11
2018-04-24 10:04



Bạn có thể xây dựng một chút về cách bạn sẽ thay đổi socket unix FPM? - myol


Tôi nghĩ bạn nên loại bỏ các gói php của bạn và cài đặt php5.6. Bạn có thể tiến hành như sau:

sudo aptitude purge dpkg -l | grep php| awk '{print $2}' |tr "\n" " "
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php5.6

Sau đó bạn có thể kiểm tra phiên bản php của bạn để chắc chắn. Nó được thực hiện như hình dưới đây:

php -v

5
2018-04-24 09:38



Tôi hy vọng rằng thực tế là bạn sẽ loại bỏ các gói php hiện tại của bạn và cài đặt php tươi sẽ được giúp đỡ rất nhiều cho bạn. - Yufenyuy Veyeh Dider
Bạn không cần phải làm phép thuật grep-awk như tất cả các gói phụ thuộc vào php5-common, rất dễ: apt-get purge php5-common sẽ lọc tất cả các gói php5 khỏi hệ thống của bạn. - oerdnj