Komut satırı ubuntu 16.04'te php sürümlerini değiştirin


96

Ubuntu 16.04 cihazıma php 5.6 ve php 7.1 kurdum

Web sunucum olarak Apache'yi biliyorum, yapabilirim

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

Apache modüllerinde php7.1'i devre dışı bıraktığımda ve php 5.6'yı etkinleştirdiğimde, Apache değişikliği tanır ve beklendiği gibi php 5.6 yorumlayıcısını kullanır.

Ancak dahili php web sunucusunu komut satırından çalıştırdığımda:

php -S localhost:8888

php, php 7 kullanarak istekleri ele alır. Peki komut satırında php 5.6 ve php 7.1 arasında nasıl geçiş yapabilirim?


Yanıtlar:


230

Etkileşimli anahtarlama modu

sudo update-alternatives --config php

Manuel Anahtarlama

PHP 5.6'dan itibaren => PHP 7.1

Varsayılan PHP 5.6, sisteminizde ayarlanmıştır ve PHP 7.1'e geçmeniz gerekir.

Apaçi:

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

Komut satırı:

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

PHP 7.1'den => PHP 5.6

Varsayılan PHP 7.1 sisteminizde ayarlanmıştır ve PHP 5.6'ya geçmeniz gerekir.

Apaçi:

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

Komut satırı:

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

Kaynak


1
sudo güncelleme-alternatives --set php /usr/bin/php5.6 bu komutlar zamanımı kurtardı .. teşekkürler @StevieG
Ask Bytes

Sen en iyi kardeşsin ... Çok teşekkürler.
Fendi Septiawan

Apache2 yeniden başlatıldığında bölümleme hatası yaşadım. Daha sonra, aynı anda birden fazla PHP sürümünün etkin olduğunu buldum. 5.6'yı etkinleştirmeden önce hem 7.1 hem de 7.2'yi devre dışı bırakmak zorunda kaldım.
donquixote

Aslında, bu çözümü php -v7.2'den 7.1'e değiştirmek için kullandım ! Harika ve basit.
SaidbakR

Burada harika bir tavsiye de var - askubuntu.com/questions/761713/… . Bu arada, birkaç php modülü kurabilirsiniz - örneğin, 5.6, 7.0, 7.1, 7.2 ve daha sonra, belirli bir php sürümü için belirli hatalar alırsanız (örneğin, create_functionphp 7.2'den başlayarak artık desteklenmiyor). .)
Vadim Anisimov

97

bunu komut satırınıza yazın, 16.04, 18.04 ve 20.04 arasındaki tüm ubuntu için çalışmalıdır.

$ sudo update-alternatives --config php

ve alacağın bu

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:

Uygun sürümü seçin


2
Cevap bu olmalı
itsazzad

Neden php7.2 iki kez?
Sand Of Vega

@SandOfVega bu komutun çıktısıdır ve sanırım varsayılan ise 2 kez bir şey görüntüleyebilir, ancak çıktınız farklı olabilir.
GiorgosK

Ubuntu 20.04 bana "hata: php için alternatif yok" veriyor
burzum

12

Aslında a2enmodphp 5 veya 7 için kullanmanızı tavsiye etmem. Kullanırım update-alternatives. Kullanmak sudo update-alternatives --config phpistediğiniz PHP'nin sistem geneli sürümünü ayarlamak için bunu yapabilirsiniz . Bu, komut satırı ve apache sürümlerinizin aynı şekilde çalışmasını sağlar. Sen hakkında daha fazla bilgi edinebilirsiniz update-alternativesüzerine adam sayfası .


1
Benim için çalışmıyor. PHPINFO, seçmeyi denedikten sonra bile her zaman aynı sürümü gösteriyor.
brunoramonaleleine

12

Bence bunu denemelisin

Php5.6'dan php7.1'e

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

Php7.1'den php5.6'ya

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

1
Bu kodun neden çalıştığını ve ne anlama geldiğini anlamak için cevaplarınız için yeterli açıklama yapın.Böylece cevap aynı sorunu yaşayan kullanıcılar için faydalı olacaktır. İyi yanıtların nasıl yazılacağını öğrenmek için bağlantıya bakın.
Jino Shaji

12

Mevcut tüm sürümleri listelemek ve bunlardan seçim yapmak için:

sudo update-alternatives --config php

Veya elle yap

sudo a2dismod php7.1 // disable
sudo a2enmod php5.6  // enable

9

Sürümlerden geçiş yapmak için bir komut dosyası oluşturabilirsiniz: sudo nano switch_php ardından şunu yazın:

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

çık ve kaydet onu çalıştırılabilir yap: sudo chmod +x switch_php

Komut dosyasını çalıştırmak için ./switch_php [VERSION_NUMBER]parametrenin 7 veya 5.6 olduğu yeri yazmanız yeterlidir.

İşte bu kadar, artık kolayca PHP7'den PHP 5.6'ya geçebilirsiniz!


Umut verici görünüyor ama "ln -sfn ..." kullandığınızda ln komutunda 'n' bayrağı ne yapıyor? Belgelerin hiçbir yerinde bu bayrağı ("n") bulamadım.
Fakhar Anwar

8

İki PHP sürümü arasında geçiş yapmak için aşağıdaki komut satırlarını kullanabilirsiniz.

Örneğin

Ben geçmek istiyorum PHP Versionden 7.1üzere 7.2biz komuta altında kullanabilirsiniz

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

a2dismodmevcut php sürümünü devre dışı bırakmak için a2enmodkullanılır ve sürümü etkinleştirmek için kullanılır


8

Sisteminizde PHP 5.6 gibi eski bir PHP sürümünüz olabilir ve makinenizde birden fazla PHP olması için PHP 7.2'yi de yüklediniz. Eski PHP 5.6'nın en son sürümü olduğu zaman geliştirilmiş bazı uygulamalar var, bunlar hala yayında ve bu uygulamalar üzerinde çalışıyorsunuz, Laravel üzerinde aynı anda çalışıyor olabilirsiniz, ancak Laravel başlamak için PHP 7+ gerektirir. Resmi mi aldın?

Bu durumda gereksinimlerinize uyacak şekilde PHP sürümleri arasında geçiş yapabilirsiniz.

PHP 5.6'dan Geçiş Yap => PHP 7.2

Apaçi: -

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

Komut satırı:-

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

Ve tam tersi, PHP 7.2'den Geçiş Yap => PHP 5.6

Apaçi: -

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

Komut satırı:-

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

3

Terminalinize verilen komutu yazın ..

Seçili PHP sürümünü devre dışı bırakmak için ...

    • sudo a2dismod php5
    • sudo hizmeti apache2 yeniden başlatma
  1. Diğer PHP sürümünü etkinleştirmek için ....

    • sudo a2enmod php5.6
    • sudo hizmeti apache2 yeniden başlatma

Php sürümünü yükseltecek, aynı şey sürüm düşürme istiyorsanız tersine çevirecektir, PHP_INFO () ile görebilirsiniz;


3

Şunları kullanarak PHP 5.6'dan PHP 7.2'ye geçin:

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

Şunları kullanarak PHP 7.2'den PHP 5.6'ya geçin:

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

3

Ubuntu 16.04 LTS'de kullanılmak üzere özel olarak tasarlanmış bu açık kaynaklı PHP Switch Script'lerini kullanabilirsiniz.

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

setup.shPHP 5.6, 7.0, 7.1 ve 7.2 için gerekli tüm bağımlılıkları yükleyen bir betik var. Bu tamamlandıktan sonra, PHP CLI ve Apache 2 modül sürümünü değiştirmek için aşağıdaki anahtar betiklerinden birini çalıştırabilirsiniz.

./switch-to-php-5.6.sh
./switch-to-php-7.0.sh
./switch-to-php-7.1.sh
./switch-to-php-7.2.sh

1

PHP 5.6'dan itibaren => PHP 7.1

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

eski linux sürümleri için

 $ sudo service apache2 restart

daha yeni sürüm için

$ systemctl restart apache2

1

lütfen aşağıdaki adımları izleyin:

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

1

Ubuntu'da farklı PHP sürümleri arasında geçiş yapmak için bir bash betiği yaptım.

Umarım birine yardımcı olur.

Komut dosyası şu şekildedir: (/usr/local/bin/sphp.sh içine kaydedin, + x işaretini şu komutla eklemeyi unutmayın: 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!"



0

Laravel'i Ubuntu 18.04'e yüklerken, varsayılan olarak PHP 7.3.0RC3 kurulumu seçildi, ancak laravel ve symfony, kurulu olsalar bile missin php-xml ve php-zip hakkında şikayette bulunarak düzgün şekilde yüklenmeyecekler. Yukarıdaki talimatları kullanarak php 7.1'e geçmeniz veya

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

şimdi, laravel yeni blogu çalıştırmak doğru şekilde ilerleyecek

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.