Ganti versi php pada commandline ubuntu 16.04

97

Saya telah menginstal php 5.6 dan dan php 7.1 di Ubuntu 16.04 saya

Saya tahu dengan Apache sebagai server web saya, saya bisa melakukannya

a2enmod php5.6 #to enable php5
a2enmod php7.1 #to enable php7

Ketika saya menonaktifkan php7.1 di modul Apache dan mengaktifkan php 5.6, Apache mengenali perubahan tersebut dan menggunakan interpreter php 5.6 seperti yang diharapkan.

Tetapi ketika saya menjalankan server web php internal dari baris perintah:

php -S localhost:8888

php menangani permintaan menggunakan php 7. Jadi bagaimana cara beralih antara php 5.6 dan php 7.1 di baris perintah?

salimsaid
sumber

Jawaban:

232

Mode peralihan interaktif

sudo update-alternatives --config php

Pengalihan Manual

Dari PHP 5.6 => PHP 7.1

PHP 5.6 default diatur di sistem Anda dan Anda perlu beralih ke PHP 7.1.

Apache:

$ sudo a2dismod php5.6
$ sudo a2enmod php7.1
$ sudo service apache2 restart

Garis komando:

$ sudo update-alternatives --set php /usr/bin/php7.1

Dari PHP 7.1 => PHP 5.6

PHP 7.1 default diatur di sistem Anda dan Anda perlu beralih ke PHP 5.6.

Apache:

$ sudo a2dismod php7.1
$ sudo a2enmod php5.6
$ sudo service apache2 restart

Garis komando:

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

Sumber

Stevie G
sumber
1
sudo update-alternate --set php /usr/bin/php5.6 perintah ini menghemat waktu saya .. terima kasih @StevieG
Ask Bytes
Anda adalah saudara terbaik ... Terima kasih banyak.
Fendi Septiawan
Saya mengalami kesalahan segmentasi pada restart apache2. Saya kemudian menemukan bahwa saya memiliki lebih dari satu versi PHP yang diaktifkan pada satu waktu. Saya harus menonaktifkan 7.1 dan 7.2 sebelum mengaktifkan 5.6.
donquixote
Memang, saya baru saja menggunakan solusi ini untuk mengubah php -vdari 7,2 menjadi 7,1! Itu bagus dan sederhana.
SaidbakR
Nasihat yang bagus juga ada di sini - askubuntu.com/questions/761713/… . Ngomong-ngomong, Anda dapat menginstal beberapa modul php - 5.6, 7.0, 7.1, 7.2, misalnya, dan kemudian menyulapnya, jika Anda mendapatkan kesalahan tertentu untuk versi php tertentu (misalnya, create_functiontidak lagi didukung mulai dari php 7.2 .)
Vadim Anisimov
98

ketikkan ini di baris perintah Anda, seharusnya berfungsi untuk semua ubuntu antara 16.04, 18.04 dan 20.04.

$ sudo update-alternatives --config php

dan inilah yang akan Anda dapatkan

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:

Pilih versi yang sesuai

GiorgosK
sumber
2
Yang ini harus menjadi jawabannya
itsazzad
Mengapa php7.2 dua kali?
Pasir Vega
@ SandOfVega ini adalah output dari perintah dan mungkin menampilkan sesuatu 2 kali jika default saya kira, tetapi output Anda mungkin berbeda.
GiorgosK
Ubuntu 20.04 memberi saya "kesalahan: tidak ada alternatif untuk php"
burzum
12

Saya sebenarnya tidak akan merekomendasikan penggunaan a2enmoduntuk php 5 atau 7. Saya akan menggunakan update-alternatives. Anda dapat melakukan sudo update-alternatives --config phpuntuk menyetel versi luas sistem PHP yang ingin Anda gunakan. Ini membuat versi baris perintah dan apache Anda berfungsi sama. Anda dapat membaca lebih lanjut tentang update-alternativesdi halaman manual .

FatBoyXPC
sumber
1
Ini tidak berhasil untuk saya. PHPINFO masih selalu menampilkan versi yang sama, bahkan setelah saya mencoba memilih.
brunoramonalmeida
12

Saya pikir Anda harus mencoba ini

Dari php5.6 hingga 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

Dari php7.1 hingga 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
Rupinder Sohal
sumber
1
Berikan penjelasan yang cukup atas jawaban Anda untuk memahami mengapa kode ini berfungsi dan apa artinya, sehingga jawaban tersebut akan berguna bagi pengguna yang memiliki masalah yang sama. Lihat tautan untuk mengetahui cara menulis jawaban yang baik.
Jino Shaji
12

Untuk mencantumkan semua versi yang tersedia dan memilihnya:

sudo update-alternatives --config php

Atau lakukan secara manual

sudo a2dismod php7.1 // disable
sudo a2enmod php5.6  // enable
Kamal Kumar
sumber
9

Anda dapat membuat skrip untuk beralih dari versi: sudo nano switch_php lalu ketik ini:

#!/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 )"

keluar dan simpan membuatnya dapat dieksekusi: sudo chmod +x switch_php

Untuk mengeksekusi skrip ketikkan saja ./switch_php [VERSION_NUMBER]parameternya adalah 7 atau 5.6

Itu saja, Anda sekarang dapat dengan mudah beralih dari PHP7 ke PHP 5.6!

ihakoz
sumber
Kelihatannya menjanjikan tapi apa yang dilakukan flag 'n' pada perintah ln saat Anda menggunakan "ln -sfn ...". Saya belum bisa menemukan bendera itu ("n") di manapun dalam dokumentasi.
Fakhar Anwar
8

Anda dapat menggunakan baris perintah di bawah ini untuk beralih di antara dua versi PHP.

Misalnya

Saya ingin beralih PHP Versiondari 7.1ke 7.2kita dapat menggunakan perintah di bawah ini

sudo a2dismod php7.1 &&  sudo update-alternatives --set php /usr/bin/php7.2 && sudo a2enmod php7.2 && sudo service apache2 restart

a2dismoddigunakan untuk menonaktifkan versi php saat ini dan a2enmoddigunakan untuk mengaktifkan versi tersebut

Ashish Viradiya
sumber
8

Mungkin Anda memiliki versi PHP lama seperti PHP 5.6 di sistem Anda dan Anda menginstal PHP 7.2 juga sehingga ada banyak PHP di komputer Anda. Ada beberapa aplikasi yang dikembangkan ketika PHP 5.6 yang lebih lama adalah versi terbaru, mereka masih aktif dan Anda mengerjakan aplikasi tersebut, Anda mungkin bekerja di Laravel secara bersamaan tetapi Laravel membutuhkan PHP 7+ untuk memulai. Mendapatkan fotonya?

Dalam hal ini, Anda dapat beralih di antara versi PHP yang sesuai dengan kebutuhan Anda.

Beralih Dari PHP 5.6 => PHP 7.2

Apache: -

sudo a2dismod php5.6
sudo a2enmod php7.2
sudo service apache2 restart

Garis komando:-

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

Dan sebaliknya, Beralih Dari PHP 7.2 => PHP 5.6

Apache: -

sudo a2dismod php7.2
sudo a2enmod php5.6
sudo service apache2 restart

Garis komando:-

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
Dinesh Suthar
sumber
3

Ketik perintah yang diberikan di terminal Anda ..

Untuk menonaktifkan versi PHP yang dipilih ...

    • sudo a2dismod php5
    • sudo service apache2 restart
  1. Untuk mengaktifkan versi PHP lainnya ....

    • sudo a2enmod php5.6
    • sudo service apache2 restart

Ini akan mengupgrade versi Php, sebaliknya jika Anda ingin downgrade versi, Anda dapat melihatnya dengan PHP_INFO ();

Sonpal singh Sengar
sumber
3

Beralih dari PHP 5.6 ke PHP 7.2 menggunakan:

sudo a2dismod php5.6 && sudo a2enmod php7.2 && sudo service apache2 restart

Beralih dari PHP 7.2 ke PHP 5.6 menggunakan:

sudo a2dismod php7.2 && sudo a2enmod php5.6 && sudo service apache2 restart
pengguna1560627
sumber
3

Anda dapat menggunakan Script Switch PHP open source ini, yang dirancang khusus untuk digunakan di Ubuntu 16.04 LTS.

https://github.com/rapidwebltd/php-switch-scripts

Ada setup.shskrip yang menginstal semua dependensi yang diperlukan untuk PHP 5.6, 7.0, 7.1 & 7.2. Setelah ini selesai, Anda dapat menjalankan salah satu skrip sakelar berikut untuk mengubah versi modul PHP CLI dan 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
DivineOmega
sumber
1

Dari PHP 5.6 => PHP 7.1

$ sudo a2dismod php5.6
$ sudo a2enmod php7.1

untuk versi linux lama

 $ sudo service apache2 restart

untuk versi yang lebih baru

$ systemctl restart apache2
Lawrence yang luar biasa
sumber
1

silahkan ikuti langkah-langkahnya:

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
Yash
sumber
1

Saya membuat skrip bash untuk beralih di antara versi PHP yang berbeda di Ubuntu.

Semoga bisa membantu seseorang.

Berikut skripnya: (simpan di /usr/local/bin/sphp.sh, jangan lupa tambahkan + x flag dengan perintah: sudo chmod + x /usr/local/bin/sphp.sh)

#!/bin/bash

# Usage
if [ $# -ne 1 ]; then
  echo "Usage: sphp [phpversion]"
  echo "Example: sphp 7.2"
  exit 1
fi

currentversion="`php -r \"error_reporting(0); echo str_replace('.', '', substr(phpversion(), 0, 3));\"`"
newversion="$1"

majorOld=${currentversion:0:1}
minorOld=${currentversion:1:1}
majorNew=${newversion:0:1}
minorNew=${newversion:2:1}

if [ $? -eq 0 ]; then
  if [ "${newversion}" == "${currentversion}" ]; then
    echo "PHP version [${newversion}] is already being used"
    exit 1
  fi

  echo "PHP version [$newversion] found"
  echo "Switching from [php${currentversion}] to [php${newversion}] ... "

  printf "a2dismod php$majorOld.$minorOld ... "
  sudo a2dismod "php${majorOld}.${minorOld}"
  printf "[OK] and "

  printf "a2enmod php${newversion} ... "
  sudo a2enmod "php${majorNew}.${minorNew}"
  printf "[OK]\n"

  printf "update-alternatives ... "
  sudo update-alternatives --set php "/usr/bin/php${majorNew}.${minorNew}"
  printf "[OK]\n"

  sudo service apache2 restart
  printf "[OK] apache2 restarted\n"
else
  echo "PHP version $majorNew.$minorNew was not found."
  echo "Try \`sudo apt install php@${newversion}\` first."
  exit 1
fi

echo "DONE!"

pedagang asongan
sumber
0

Saat menginstal laravel di Ubuntu 18.04, pilih instalasi default PHP 7.3.0RC3, tetapi laravel dan symfony tidak akan diinstal dengan benar karena mengeluh tentang missin php-xml dan php-zip, meskipun sudah diinstal. Anda perlu beralih ke php 7.1, menggunakan petunjuk di atas atau,

 sudo update-alternatives --set php /usr/bin/php7.1

sekarang, menjalankan blog baru laravel, akan berjalan dengan benar

pingle60
sumber