कमांडलाइन ubuntu 16.04 पर php संस्करणों को स्विच करें


108

मैंने अपने Ubuntu 16.04 पर php 5.6 और php 7.1 स्थापित किया है

मैं अपाचे के साथ अपने वेब सर्वर के रूप में जानता हूं, मैं कर सकता हूं

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

जब मैं अपाचे मॉड्यूल में php7.1 को अक्षम करता हूं और php 5.6 को सक्षम करता है, तो Apache परिवर्तन को पहचानता है और अपेक्षित रूप से php 5.6 दुभाषिया का उपयोग करता है।

लेकिन जब मैं कमांडलाइन से आंतरिक php वेब सर्वर चलाता हूं:

php -S localhost:8888

php 7 से php का उपयोग करके अनुरोधों को संभालता है। इसलिए मैं कमांड लाइन में php 5.6 और php 7.1 के बीच कैसे स्विच करूं?


जवाबों:


246

इंटरएक्टिव स्विचिंग मोड

sudo update-alternatives --config php

मैनुअल स्विचिंग

PHP 5.6 => PHP 7.1 से

डिफ़ॉल्ट PHP 5.6 आपके सिस्टम पर सेट है और आपको PHP 7.1 पर स्विच करना होगा।

अमरीका की एक मूल जनजाति:

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

कमांड लाइन:

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

PHP 7.1 => PHP 5.6 से

डिफ़ॉल्ट PHP 7.1 आपके सिस्टम पर सेट है और आपको PHP 5.6 पर स्विच करना होगा।

अमरीका की एक मूल जनजाति:

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

कमांड लाइन:

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

स्रोत


1
सूडो अपडेट-अल्टरनेटिव्स --सेट php /usr/bin/php5.6 इस कमांड ने मेरा समय बचाया .. धन्यवाद @StevieG
आस्क बाइट्स

तुम सबसे अच्छे भाई हो ... बहुत बहुत धन्यवाद।
फेंडी सेप्टियावन

मुझे Apache2 पुनरारंभ पर विभाजन दोष था। मैंने तब पाया कि मेरे पास एक समय में एक से अधिक PHP संस्करण सक्षम थे। 5.6 को सक्षम करने से पहले मुझे 7.1 और 7.2 दोनों को निष्क्रिय करना पड़ा।
दान

वास्तव में, मैंने सिर्फ php -v7.2 से 7.1 तक बदलने के लिए इस समाधान का उपयोग किया है ! यह महान और सरल है।
सईदबाकरा

सलाह के महान टुकड़े यहाँ भी है - askubuntu.com/questions/761713/… । वैसे, आप कई php मॉड्यूल स्थापित कर सकते हैं - उदाहरण के लिए 5.6, 7.0, 7.1, 7.2, और फिर उन्हें टटोलें, यदि आपको दिए गए php के संस्करण के लिए कुछ त्रुटियां मिलती हैं (उदाहरण के लिए, create_functionअब php 7.2 से शुरू होने वाला समर्थन नहीं है। ।)
वादिम अनीसिमोव

121

इसे अपनी कमांड लाइन में टाइप करें, सभी ubuntu के लिए 16.04, 18.04 और 20.04 के बीच काम करना चाहिए।

$ sudo update-alternatives --config php

और यह आपको मिलेगा

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:

उपयुक्त संस्करण चुनें


2
यह एक जवाब होना चाहिए
इसका जैजैड

क्यों php7.2 दो बार?
वेगा

@SandOfVega यह कमांड का आउटपुट है और डिफ़ॉल्ट रूप से अनुमान लगाने पर यह 2 बार कुछ प्रदर्शित कर सकता है, लेकिन आपका आउटपुट अलग हो सकता है।
जियोर्गास्क

Ubuntu 20.04 मुझे "त्रुटि: php के लिए कोई विकल्प नहीं" देता है
बुर्जुम

@burzum उबंटू 20.04 पर ठीक काम करता है।
पोथी कालीमुथु

13

मुझे लगता है कि आपको यह कोशिश करनी चाहिए

Php5.6 से 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

Php7.1 से 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

1
यह समझने के लिए कि यह कोड क्यों काम करता है और इसका क्या अर्थ है, यह समझने के लिए अपने उत्तरों के लिए पर्याप्त स्पष्टीकरण दें। इसलिए कि यह उत्तर उपयोगकर्ताओं के लिए एक ही समस्या के लिए उपयोगी होगा। अच्छे उत्तर कैसे लिखें, यह जानने के लिए लिंक देखें।
जेनो शाजी

12

मैं वास्तव में a2enmodphp 5 या 7. के लिए उपयोग करने की सलाह नहीं दूंगा update-alternatives। आप sudo update-alternatives --config phpPHP का कौन सा सिस्टम वाइड वर्जन इस्तेमाल करना चाहते हैं, यह सेट करने के लिए कर सकते हैं । इससे आपकी कमांड लाइन और अपाचे संस्करण समान कार्य करते हैं। आप मैन पेजupdate-alternatives पर अधिक पढ़ सकते हैं ।


1
यह मेरे लिए काम नहीं कर रहा है। PHPINFO अभी भी हमेशा एक ही संस्करण दिखा रहा है, भले ही मैं चुनने की कोशिश करूं।
ब्रुनेरमोनलमेइडा

12

सभी उपलब्ध संस्करणों को सूचीबद्ध करने और उनमें से चुनने के लिए:

sudo update-alternatives --config php

या मैन्युअल रूप से करते हैं

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

10

आप संस्करणों से स्विच करने के लिए एक स्क्रिप्ट बना सकते हैं: sudo nano switch_php फिर इसे टाइप करें:

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

बाहर निकलें और इसे बचाने के लिए निष्पादन योग्य बनाएं: sudo chmod +x switch_php

स्क्रिप्ट को निष्पादित करने के लिए बस टाइप करें ./switch_php [VERSION_NUMBER]जहां पैरामीटर 7 या 5.6 है

यही कारण है कि अब आप आसानी से फॉर्म PHP7 को PHP 5.6 में बदल सकते हैं!


होनहार लग रहा है, लेकिन क्या करता है 'n' झंडा ln कमांड में करता है जैसा कि आप "ln -sfn ..." का उपयोग करते हैं। मैं दस्तावेज़ में कहीं भी उस ध्वज ("n") को नहीं खोज पाया।
फखर अनवर

8

आप दो PHP संस्करण के बीच स्विच करने के लिए कमांड लाइनों के नीचे का उपयोग कर सकते हैं।

उदाहरण के लिए

मैं स्विच करना चाहते PHP Versionसे 7.1करने के लिए 7.2हम आदेश नीचे का उपयोग कर सकते

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

a2dismodवर्तमान php संस्करण को अक्षम a2enmodकरने के लिए उपयोग किया जाता है और संस्करण को सक्षम करने के लिए उपयोग किया जाता है


8

हो सकता है कि आपके पास अपने सिस्टम में PHP 5.6 जैसा एक पुराना PHP संस्करण हो और आपने PHP 7.2 भी स्थापित किया हो इसलिए आपके मशीन में कई PHP हैं। कुछ अनुप्रयोग हैं जो पुराने PHP 5.6 नवीनतम संस्करण के समय विकसित किए गए थे, वे अभी भी जीवित हैं और आप उन अनुप्रयोगों पर काम कर रहे हैं, आप एक साथ Laravel पर काम कर रहे होंगे, लेकिन Laravel को आरंभ करने के लिए PHP 7+ की आवश्यकता होती है। तस्वीर हो रही है?

उस स्थिति में आप अपनी आवश्यकताओं के अनुरूप PHP संस्करणों के बीच स्विच कर सकते हैं।

PHP 5.6 => PHP 7.2 से स्विच करें

अमरीका की एक मूल जनजाति:-

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

कमांड लाइन:-

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

और इसके विपरीत, PHP 7.2 => PHP 5.6 से स्विच करें

अमरीका की एक मूल जनजाति:-

sudo a2dismod php7.2
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
sudo update-alternatives --set phpize /usr/bin/phpize5.6
sudo update-alternatives --set php-config /usr/bin/php-config5.6

3

अपने टर्मिनल में दी गई कमांड टाइप करें।

चयनित PHP संस्करण को अक्षम करने के लिए ...

    • सूद a2dismod php5
    • sudo service apache2 पुनरारंभ
  1. अन्य PHP संस्करण को सक्षम करने के लिए ....

    • सूद a2enmod php5.6
    • sudo service apache2 पुनरारंभ

यह Php वर्जन को अपग्रेड करेगा, यदि आप डाउनग्रेड वर्जन चाहते हैं तो वही चीज रिवर्स होगी, आप इसे PHP_INFO () द्वारा देख सकते हैं;


3

PHP 5.6 से PHP 7.2 का उपयोग कर स्विच करें:

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

PHP 7.2 से PHP 5.6 का उपयोग कर स्विच करें:

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

3

आप इन ओपन सोर्स PHP स्विच लिपियों का उपयोग कर सकते हैं, जिन्हें विशेष रूप से Ubuntu 16.04 LTS में उपयोग के लिए डिज़ाइन किया गया था।

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

एक setup.shस्क्रिप्ट है जो PHP 5.6, 7.0, 7.1 और 7.2 के लिए सभी आवश्यक निर्भरताएं स्थापित करती है। एक बार जब यह पूरा हो जाता है, तो आप बस PHP सीएलआई और अपाचे 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

1

PHP 5.6 => PHP 7.1 से

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

पुराने लिनक्स संस्करणों के लिए

 $ sudo service apache2 restart

अधिक हाल के संस्करण के लिए

$ systemctl restart apache2

1

कृपया निम्नलिखित चरणों का पालन करें:

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

मैंने उबंटू के विभिन्न PHP संस्करणों के बीच स्विच करने के लिए एक बैश स्क्रिप्ट बनाई।

आशा है कि यह किसी की मदद करता है।

यहाँ स्क्रिप्ट है: (इसे /usr/local/bin/sphp.sh में सहेजें, कमांड के साथ + x ध्वज जोड़ना न भूलें: 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

आप PHP स्क्रिप्ट के बीच स्विच करने के लिए नीचे स्क्रिप्ट का उपयोग कर सकते हैं आसानी से मैंने phpize कॉन्फ़िगरेशन को भी शामिल किया है।

https://github.com/anilkumararumulla/switch-php-version

स्क्रिप्ट फ़ाइल डाउनलोड करें और चलाएं

sh switch.sh

0

उबंटू 18.04 पर लार्वा स्थापित करते समय, डिफ़ॉल्ट PHP 7.3.0RC3 का चयन करें, लेकिन लारवल और सिम्फनी मिस्स php-xml और php-zip के बारे में शिकायत करने के बावजूद ठीक से स्थापित नहीं होंगे, भले ही वे स्थापित हों। उपरोक्त निर्देशों का उपयोग करते हुए, आपको php 7.1 पर स्विच करना होगा, या

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

अब, लार्वा नए ब्लॉग को चलाने, सही ढंग से आगे बढ़ेगा

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.