Zainstalowałem php 5.6 i php 7.1 na moim Ubuntu 16.04
Wiem, że z Apache jako moim serwerem internetowym mogę to zrobić
a2enmod php5.6 #to enable php5
a2enmod php7.1 #to enable php7
Kiedy wyłączam php7.1 w modułach Apache i włączam php 5.6, Apache rozpoznaje zmianę i używa interpretera php 5.6 zgodnie z oczekiwaniami.
Ale kiedy uruchamiam wewnętrzny serwer WWW php z wiersza poleceń:
php -S localhost:8888
php obsługuje żądania przy użyciu php 7. Jak więc przełączać się między php 5.6 i php 7.1 w linii poleceń?
Odpowiedzi:
Interaktywny tryb przełączania
sudo update-alternatives --config php
Przełączanie ręczne
Z PHP 5.6 => PHP 7.1
Domyślnie w Twoim systemie jest ustawione PHP 5.6 i musisz przełączyć się na PHP 7.1.
Apache:
$ sudo a2dismod php5.6 $ sudo a2enmod php7.1 $ sudo service apache2 restart
Wiersz poleceń:
$ sudo update-alternatives --set php /usr/bin/php7.1
Z PHP 7.1 => PHP 5.6
Domyślnie w Twoim systemie jest ustawione PHP 7.1 i musisz przełączyć się na PHP 5.6.
Apache:
$ sudo a2dismod php7.1 $ sudo a2enmod php5.6 $ sudo service apache2 restart
Wiersz poleceń:
$ sudo update-alternatives --set php /usr/bin/php5.6
Źródło
źródło
php -v
z 7.2 na 7.1! To jest świetne i proste.create_function
nie jest już obsługiwany począwszy od php 7.2 .)wpisz to w wierszu poleceń, powinno działać dla wszystkich ubuntu między 16.04, 18.04 a 20.04.
i to właśnie dostaniesz
There are 4 choices for the alternative php (providing /usr/bin/php). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/bin/php7.2 72 auto mode 1 /usr/bin/php5.6 56 manual mode 2 /usr/bin/php7.0 70 manual mode 3 /usr/bin/php7.1 71 manual mode 4 /usr/bin/php7.2 72 manual mode Press <enter> to keep the current choice[*], or type selection number:
Wybierz odpowiednią wersję
źródło
Myślę, że powinieneś tego spróbować
Od php5.6 do php7.1
sudo a2dismod php5.6 sudo a2enmod php7.1 sudo service apache2 restart sudo update-alternatives --set php /usr/bin/php7.1 sudo update-alternatives --set phar /usr/bin/phar7.1 sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.1
Od php7.1 do php5.6
sudo a2dismod php7.1 sudo a2enmod php5.6 sudo service apache2 restart sudo update-alternatives --set php /usr/bin/php5.6 sudo update-alternatives --set phar /usr/bin/phar5.6 sudo update-alternatives --set phar.phar /usr/bin/phar.phar5.6
źródło
Właściwie nie polecałbym używania
a2enmod
dla php 5 lub 7. Użyłbymupdate-alternatives
. Możesz zrobić,sudo update-alternatives --config php
aby ustawić systemową wersję PHP, której chcesz używać. To sprawia, że wersje wiersza poleceń i apache działają tak samo. Możesz przeczytać więcej o tymupdate-alternatives
na stronie man .źródło
Aby wyświetlić wszystkie dostępne wersje i wybrać jedną z nich:
Lub zrób to ręcznie
sudo a2dismod php7.1 // disable sudo a2enmod php5.6 // enable
źródło
Możesz utworzyć skrypt, aby przełączyć się z wersji:
sudo nano switch_php
następnie wpisz to:#!/bin/sh #!/bin/bash echo "Switching to PHP$1..." case $1 in "7") sudo a2dismod php5.6 sudo a2enmod php7.0 sudo service apache2 restart sudo ln -sfn /usr/bin/php7.0 /etc/alternatives/php;; "5.6") sudo a2dismod php7.0 sudo a2enmod php5.6 sudo service apache2 restart sudo ln -sfn /usr/bin/php5.6 /etc/alternatives/php;; esac echo "Current version: $( php -v | head -n 1 | cut -c-7 )"
wyjdź i zapisz, aby był wykonywalny:
sudo chmod +x switch_php
Aby wykonać skrypt, wystarczy wpisać
./switch_php [VERSION_NUMBER]
parametr 7 lub 5,6To wszystko, teraz możesz łatwo przełączyć się z PHP7 na PHP 5.6!
źródło
man ln
:-n, --no-dereference : treat LINK_NAME as a normal file if it is a symbolic link to a directory
Na przykład
Chcę przełączyć się
PHP Version
z7.1
na7.2
, możemy użyć poniższego poleceniasudo a2dismod php7.1 && sudo update-alternatives --set php /usr/bin/php7.2 && sudo a2enmod php7.2 && sudo service apache2 restart
a2dismod
służy do wyłączania bieżącej wersji php ia2enmod
służy do włączania wersjiźródło
Być może masz w swoim systemie starą wersję PHP, taką jak PHP 5.6, a także zainstalowałeś PHP 7.2, dzięki czemu na komputerze jest wiele PHP. Istnieją aplikacje, które zostały opracowane, gdy starsza wersja PHP 5.6 była najnowszą wersją, nadal działają i pracujesz nad tymi aplikacjami. Możesz pracować jednocześnie na Laravel, ale Laravel wymaga PHP 7+, aby rozpocząć. Dostajesz zdjęcie?
W takim przypadku możesz przełączać się między wersjami PHP zgodnie z własnymi wymaganiami.
Przełącz z PHP 5.6 => PHP 7.2
Apacz: -
sudo a2dismod php5.6 sudo a2enmod php7.2 sudo service apache2 restart
Wiersz poleceń:-
sudo update-alternatives --set php /usr/bin/php7.2 sudo update-alternatives --set phar /usr/bin/phar7.2 sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.2 sudo update-alternatives --set phpize /usr/bin/phpize7.2 sudo update-alternatives --set php-config /usr/bin/php-config7.2
I odwrotnie, Przełącz z PHP 7.2 => PHP 5.6
Apacz: -
sudo a2dismod php7.2 sudo a2enmod php5.6 sudo service apache2 restart
Wiersz poleceń:-
sudo update-alternatives --set php /usr/bin/php5.6 sudo update-alternatives --set phar /usr/bin/phar5.6 sudo update-alternatives --set phar.phar /usr/bin/phar.phar5.6 sudo update-alternatives --set phpize /usr/bin/phpize5.6 sudo update-alternatives --set php-config /usr/bin/php-config5.6
źródło
Wpisz podane polecenie w swoim terminalu ..
Aby wyłączyć wybraną wersję PHP ...
Aby włączyć inną wersję PHP ...
Zaktualizuje wersję Php, to samo odwrotnie, jeśli chcesz obniżyć wersję, możesz to zobaczyć przez PHP_INFO ();
źródło
Przejdź z PHP 5.6 do PHP 7.2 za pomocą:
sudo a2dismod php5.6 && sudo a2enmod php7.2 && sudo service apache2 restart
Przejdź z PHP 7.2 do PHP 5.6 za pomocą:
sudo a2dismod php7.2 && sudo a2enmod php5.6 && sudo service apache2 restart
źródło
Możesz użyć tych skryptów przełączników PHP typu open source, które zostały zaprojektowane specjalnie do użytku w Ubuntu 16.04 LTS.
https://github.com/rapidwebltd/php-switch-scripts
Istnieje
setup.sh
skrypt, który instaluje wszystkie wymagane zależności dla PHP 5.6, 7.0, 7.1 i 7.2. Po zakończeniu możesz po prostu uruchomić jeden z następujących skryptów przełącznika, aby zmienić wersję PHP CLI i Apache 2../switch-to-php-5.6.sh ./switch-to-php-7.0.sh ./switch-to-php-7.1.sh ./switch-to-php-7.2.sh
źródło
Z PHP 5.6 => PHP 7.1
$ sudo a2dismod php5.6 $ sudo a2enmod php7.1
dla starych wersji Linuksa
dla nowszej wersji
źródło
proszę postępować zgodnie z instrukcjami:
i.e : your current version is : current_version = 7.3 , and you want to change it to : new_version = 7.2 1) sudo a2dismod php(current_version) 2) sudo a2enmod php(new_version) 3) sudo update-alternatives --config php (here you need to select php version number) 4) restart apache through : sudo /etc/init.d/apache2 restart OR sudo service apache2 restart
źródło
Zrobiłem skrypt basha, aby przełączać się między różnymi wersjami PHP w systemie Ubuntu.
Mam nadzieję, że to komuś pomoże.
Oto skrypt: (zapisz go w /usr/local/bin/sphp.sh, nie zapomnij dodać flagi + x poleceniem: sudo chmod + x /usr/local/bin/sphp.sh)
źródło
Możesz użyć poniższego skryptu, aby łatwo przełączać się między wersjami PHP.Dołączono również konfigurację phpize.
https://github.com/anilkumararumulla/switch-php-version
Pobierz plik skryptu i uruchom
sh switch.sh
źródło
Podczas instalacji laravel na Ubuntu 18.04, domyślnie wybrana jest instalacja PHP 7.3.0RC3, ale laravel i symfony nie zainstalują się poprawnie, skarżąc się na missin php-xml i php-zip, mimo że są zainstalowane. Musisz przełączyć się na php 7.1, postępując zgodnie z instrukcjami powyżej lub
sudo update-alternatives --set php /usr/bin/php7.1
teraz, prowadzenie laravel nowego bloga, będzie przebiegać poprawnie
źródło