PHP के दो संस्करण कैसे स्थापित करें और उनके बीच आसानी से स्विच करें?


76

मैं अपने Ubuntu मशीन पर PHP 5.2.17 और PHP 5.3.5 दोनों स्थापित करना चाहता हूं और अपनी आवश्यकता के अनुसार स्विच कर सकता हूं। इसे कैसे प्राप्त किया जा सकता है?


ubuntu में apache.conf in / etc / apache2 है, मैंने इस बारे में भी सोचा, शायद मैं भविष्य में कुछ पैकेज

आप suPHP साथ ऐसा कर सकते, नहीं यकीन है कि विवरण
मार्को Ceppi

1
क्या python virtualenv जैसी कुछ चीज़ों में PHP की स्वच्छ पृथक तैनाती है?
२०:१२

क्या आपने वर्चुअलाइजेशन सॉफ़्टवेयर का उपयोग करके वर्चुअल उबंटू सर्वर स्थापित करने पर विचार किया है जिसका उपयोग आप बिना सिर के फैशन में करते हैं? मुझे आश्चर्य होगा कि अगर आप जो करना चाहते हैं, वह इस तरह के सेट-अप द्वारा अच्छी तरह से नहीं किया गया है।
सिमोन होरे

1
परिभाषित करें कि इसका क्या अर्थ है "आसानी से स्विच करें"। मैंने इसे काम के लिए उपयोग किया है: मेरा वेबसर्वर विभिन्न PHP के लिए .phpऔर .php5फ़ाइलों का उपयोग कर रहा था । आप अपने डब्ल्यूडब्ल्यूडब्ल्यू सर्वर को विभिन्न बंदरगाहों (जैसे http://localhost:80और http://localhost:8080) या अलग-अलग डोमेन (जैसे http://localphp52और http://localphp53) के लिए अलग-अलग पीएचपी संस्करणों का उपयोग करने के लिए कॉन्फ़िगर कर सकते हैं , शेष सभी फ़ोल्डर की संरचना को बरकरार रखते हुए ताकि आप वर्तमान में बदलकर दो वातावरणों में एक वेब अनुप्रयोग चलाने की तुलना कर सकें यूआरएल।
cprn

जवाबों:


61

आप इसे प्राप्त करने के लिए php संस्करण प्रबंधक का उपयोग कर सकते हैं। विभिन्न संस्करण प्रबंधक उपलब्ध हैं जैसे:

मेरा पसंदीदा phpbrew है। उम्मीद है की यह मदद करेगा।


2
धन्यवाद, क्या आप कृपया निर्देश शामिल कर सकते हैं? (onnu vishadheekarikkamo?)
Tachyons

17
जब भी यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, तो उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर होगा
नन्ने

2
बस उन लिंक्स की जाँच करें जिनके पास उनकी साइटों पर वास्तव में अच्छे दस्तावेज हैं। क्या आप वास्तव में मुझे उनकी वेबसाइट से चीजों को कॉपी-पेस्ट करना चाहते हैं?
अनीशप

7
विडंबना यह है कि लिंक पोस्ट न करने का एक कारण लिंकरोट है, जिससे यह पोस्ट अब ग्रस्त है।
दर्पण

@aneeshep, उनके दस्तावेज़ की कॉपी-पेस्ट नहीं, बल्कि प्रासंगिक अंश और "php संस्करण प्रबंधक" के बारे में कुछ पंक्तियाँ और उस विशिष्ट समस्या के लिए इसका उपयोग / कॉन्फ़िगर कैसे करें, यह वास्तव में स्वागत योग्य होगा।
मैथ्यू

20

आप एक ही बार में 2 भिन्न PHP संस्करण चला सकते हैं, लेकिन यह उतना आसान नहीं है जितना कि उन्हें प्राप्त करना। आपको एक अलग इंस्टॉल किए गए संस्करण को चलाने की आवश्यकता है और इसे अपने अपाचे कॉन्फिगरेशन में सेटिंग्स के अनुसार सर्व करें।

आप उदाहरण के लिए Fastcgi का उपयोग करके ऐसा कर सकते हैं: मूल रूप से आप जो देख रहे हैं वह वही है जो आप इस पृष्ठ पर देख रहे हैं । आप अपने विन्यास में उस स्थिति / बंदरगाह / डोमेन के आधार पर एक अलग हैंडलर जोड़ते हैं, जिसकी आपको आवश्यकता है। दोनों संस्करणों को स्थापित करने के बाद चाल, यह कदम है:

=== उस पेज से ==

  1. वर्चुअल होस्ट बनाने के लिए अंतिम चरण था। अंत में मेरे पास / etc / apache2 / sites-enable में तीन फाइलें हैं: 000-डिफ़ॉल्ट, php5.3.17 और php5.4.7 निम्नलिखित सामग्री के साथ

चूक:

    <VirtualHost *:80>
      ServerName localhost
      DocumentRoot /var/www
      <Directory "/var/www">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
        AddHandler php-cgi .php
        Action php-cgi /php-fcgi/php5317.fcgi
      </Directory>
    </VirtualHost>

php5.3.17:

    <VirtualHost *:80>
      ServerName 5317.localhost
      DocumentRoot /var/www
      <Directory "/var/www">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
        AddHandler php-cgi .php
        Action php-cgi /php-fcgi/php5317.fcgi
      </Directory>
    </VirtualHost>

php5.4.7:

    <VirtualHost *:80>
      ServerName 547.localhost
      DocumentRoot /var/www
      <Directory "/var/www">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
        AddHandler php-cgi .php
        Action php-cgi /php-fcgi/php547.fcgi
      </Directory>
    </VirtualHost>

लिंक किए गए प्रश्न को पूर्ण स्थापना के लिए देखें । हेडर में दो लिंक को देखने के लिए मत भूलना, साथ ही वे अच्छे ट्यूटोरियल (लेकिन कम संकुचित) की तरह दिखते हैं। यह और वह

(इस तथ्य से नहीं जोड़ा जाना चाहिए कि जुड़ा हुआ प्रश्न एक बड़ा है जिसमें कोई स्वीकृत उत्तर नहीं है। विधि को ठीक करना चाहिए (और करता है), लेकिन उपयोगकर्ता शॉर्टटैग बंद का उपयोग करना <?phpऔर उपयोग <?करना भूल गया, टिप्पणियां देखें)


13

मैंने php 5.6 और 7.0 स्थापित किया है, लेकिन इसके अलावा सभी युक्तियों के साथ यह 5.6 चला रहा है, इसलिए यह कमांड दिन बचाता है (मेरे मामले में मैं विकल्प 1 को चुनता हूं और अपाचे को पुनरारंभ करता हूं):

sudo update-alternatives --config php

यह याद रखना उपयोगी है phpinfo()और php -vक्रासचेक करने के लिए क्योंकि दोनों का मूल्य अलग हो सकता है।
आदि प्रसिद्धि

6

यह एक मेरे लिए काम करता है: https://lornajane.net/posts/2016/php-7-0-and-5-6-6-usuntu

"ग्रोइंग पिस्सू" से स्क्रिप्ट के समान, लेकिन नए संस्करणों का उपयोग करना।

पीपीए जोड़ें

PHP 5.6 और PHP 7.0 पैकेज एक तृतीय पक्ष PPA से हैं, जो कि Canonical से आधिकारिक Ubuntu रिपॉजिटरी द्वारा प्रदान नहीं किया गया है। मैं यहाँ जिन PPA की सिफारिश कर रहा हूँ, वे Ondjej Surý के हैं, जो PHP को Debian (जो कि उबंटू द्वारा प्रयोग किया जाता है) के लिए पैकेज करता है, जबकि यह एक आधिकारिक भंडार नहीं है, वह बिल्कुल यादृच्छिक नहीं है! पीपीए खुद यहां है

अपने सेटअप में पीपीए जोड़ने के लिए:

sudo add-apt-repository ppa:ondrej/php  

फिर हम इस नए पीपीए से ऑफर पर क्या है, के बारे में भी जानकारी हासिल करना चाहते हैं, इसलिए फिर रन करें:

sudo apt-get update   

नए PHP संस्करण स्थापित करें

मेरे पास पहले से ही कुछ php5 संकुल स्थापित थे, लेकिन मैंने कुछ भी अनइंस्टॉल नहीं किया, मैंने अभी उपयुक्त काम करना शुरू किया जब मैं इसे नए संस्करणों को स्थापित करने के लिए कहता हूं:

sudo apt-get install php5.6 php7.0

इसके परिणामस्वरूप बहुत सारी शिकायतें सामने आईं और बहुत सारे झगड़े हुए। पहला सुझाव दिया गया था कि सभी स्टॉक php5 संकुल को हटा दिया जाए ताकि PHP 5.6 स्थापित हो सके - इसलिए मैंने सिर्फ पहला सुझाव स्वीकार किया।

मैं अपाचे का उपयोग करता हूं, इसलिए इस सेटअप ने मुझे php5.6 और php7.0 दोनों उपलब्ध मॉड्यूल के साथ अपाचे दिया, और वास्तव में लोड किए गए php5.6 मॉड्यूल।

साथ ही सिर्फ PHP ही, सभी एक्सटेंशन और अन्य उपकरण जो आप PHP से अपेक्षा करेंगे, PHP के दोनों संस्करणों के लिए हैं, इसलिए आपके द्वारा आवश्यक मॉड्यूल में जोड़ना बहुत आसान है। मैं बहुत, बहुत प्रभावित था कि यह कैसे किया जाता है।

संस्करणों को कॉन्फ़िगर और स्विच करना

अब आपके पास अपने सिस्टम पर स्थापित PHP के दो पूरी तरह से अलग संस्करण हैं, तो चलिए एक नज़र डालते हैं कि सभी टुकड़े कहाँ गए!

कॉन्फ़िगरेशन फ़ाइलें सभी क्रमशः /etc/php/5.6और /etc/php/7.0क्रमशः हैं - यहां अंदर है जहां आप कॉन्फ़िगर कर सकते हैं कि कौन से एक्सटेंशन लोड किए गए हैं, इनआई सेटिंग्स सेट करें, और अलगाव में प्रत्येक संस्करण के लिए बाकी सब कुछ।

मैं एक अपाचे उपयोगकर्ता हूं, और जैसा कि मैंने उल्लेख किया है कि दोनों मॉड्यूल उपलब्ध हैं। तो एक से दूसरे में जाने के लिए मुझे क्या करना होगा:

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

नगनेक्स उपयोगकर्ताओं के लिए, परिवर्तन लगभग आसान हैं, डिजिटल महासागर के पास इस पर अच्छे दस्तावेज हैं (उनके पास महान डॉक्स हैं!) इसलिए उनके मार्गदर्शक देखें: https://www.digitalocean.com/community/tutorials/how-to- उन्नयन-से-php-7-on-ubuntu-14-04, क्योंकि इसमें PHP के किसी अन्य संस्करण का उपयोग करने के लिए nginx को पुन: कॉन्फ़िगर करने पर एक अनुभाग शामिल है।

कमांड-लाइन से, मेरे पास php5.6 और php7.0 दोनों कमांड के रूप में उपलब्ध हैं। मेरे पास अभी भी एक php कमांड है - देखने के लिए / etc / विकल्प में यह देखने के लिए कि यह PHP cli * के किसी विशेष संस्करण के लिए सहानुभूति रखता है। आप यह भी जल्दी से जांच सकते हैं कि आपका कौन सा उपयोग कर रहा है php -v

* अधिक विशेष रूप से, यह देखने के लिए कि PHP का कौन सा संस्करण इस्तेमाल किया जा रहा है - लेकिन यह संभवतः इस ओर इशारा करेगा /usr/bin/php, जो मेरे लिए स्वयं /etc/alternatives/phpकमांड के लिए एक सिमलिंक है ।

एक्सटेंशन के साथ काम करना

यह PPA सामान्य php-pear पैकेज के साथ आता है जो PHP के दोनों संस्करणों के लिए pecl कमांड प्रदान करता है, इसलिए PECL के माध्यम से उपलब्ध कोई भी एक्सटेंशन सामान्य तरीके से स्थापित किया जा सकता है। आपको प्रासंगिक हेडर की भी आवश्यकता होगी ताकि या तो php5.6-dev या php7.0-dev स्थापित हो।

जब pecl स्थापना पूर्ण हो जाती है, तो आपको अपने .p फ़ाइल में * .so फ़ाइल जोड़ने के लिए एक नोट मिलेगा; वास्तव में सबसे अच्छी बात यह है कि यहाँ क्या देखना है /etc/php/mods-available। यहां पहले से ही कुछ मॉड्यूल होंगे, प्रत्येक अपनी फ़ाइल में एक्सटेंशन और इनिनी के नाम पर होगा। आप एक टेम्पलेट के रूप में उपयोग करने के लिए एक कॉपी कर सकते हैं या अपना खुद का बना सकते हैं और इसमें एक्सटेंशन के लिए सभी प्रासंगिक कॉन्फ़िगरेशन डाल सकते हैं (न्यूनतम के रूप में, आपको आवश्यकता है extension=[extensionName].so)।

नया एक्सटेंशन उपलब्ध होने के बाद, सक्षम करें और फिर इसे करके देखें:

sudo phpenmod extension  
php -m  

यह इस मॉड्यूल को लोड करने के लिए PHP के आपके वर्तमान संस्करण के लिए सही स्थानों पर सहानुभूति पैदा करेगा, और आपको इसे मॉड्यूल आउटपुट की सूची में देखना चाहिए php -m। प्रो टिप: यदि आप इसे आउटपुट में नहीं देखते हैं, तो आउटपुट के शीर्ष पर सभी तरह से स्क्रॉल करें और देखें कि क्या कोई उपयोगी त्रुटि संदेश हैं।


3

इस पोस्ट से , मैं सिर्फ आदेशों को बताता हूं और मुझे बताए गए अनुसार आदेश देता हूं (Ubuntu 12.04)

यह तरीका आपको देता है:

  1. मेनू के साथ स्क्रिप्ट, कि स्थापित php संस्करणों के बीच परमिट स्विच (एक ही समय में दोनों नहीं)

  2. आपके सर्वर पर स्थापित विभिन्न PHP संस्करण

  3. अलग फ़ाइलें

वे सभी संस्करण स्थापित करें जिनकी आपको आवश्यकता है (मेरे पास दो हैं)

निर्भरता स्थापित करें:

sudo apt-get install flex apache2-threaded-dev libxml2-dev apache2 apache2-mpm-prefork apache2-threaded-dev apache2-utils apache2.2-bin apache2.2-common

PHP 5.3 पहली बार स्थापित करें। डाउनलोड php स्रोत

md5sum Downloads/php-5.3.10.tar.bz2
mkdir ~/Sources
cd ~Sources/
cp -Rf ../Downloads/php-5.3.10.tar.bz2 .
tar xjf php-5.3.10.tar.bz2
cd php-5.3.10/
sudo mkdir /usr/local/php/php_5.3.10

PHP5.6 पहली बार स्थापित करें। डाउनलोड php स्रोत

md5sum Downloads/php-5.6.11.tar.bz2
mkdir ~/Sources
cd ~Sources/
cp -Rf ../Downloads/php-5.6.11.tar.bz2 .
tar xjf php-5.6.11.tar.bz2
cd php-5.6.11/
sudo mkdir /usr/local/php/php-5.6.11

स्क्रिप्ट प्रबंधक संस्करण PHP: नामक एक फ़ाइल बनाएं php.shऔर इसे इसमें डालें /bin/:

#!/bin/bash
opcion=0
cat << CABECERAMENU
Opciones del menu
1 => PHP 5.3.10
2 => PHP 5.6.11
CABECERAMENU
echo -n "Ingrese su eleccion: "
read opcion
echo
case $opcion in
    "1")
        rm /etc/apache2/php.conf
        ln -s /usr/local/php/php_5.3.10.conf /etc/apache2/php.conf
        /etc/init.d/apache2 restart
    ;;
    "2")
        rm /etc/apache2/php.conf
        ln -s /usr/local/php/php_5.6.11.conf /etc/apache2/php.conf
        /etc/init.d/apache2 restart
    ;;
    *)
        echo "Opcion no valida"
    ;;
esac

संकलन और स्थापित करें php 5.3:

cd ~/Sources/php-5.3.10/
sudo ./configure --prefix=/usr/local/php/php_5.3.10 --with-config-file-path=/usr/local/php/php_5.3.10/lib --with-mysql --with-libdir=/lib/x86_64-linux-gnu --with-apxs2=/usr/bin/apxs2 --enable-zip --with-gd --with-curl --with-xmlrpc --with-freetype-dir=/usr/lib/x86_64-linux-gnu  --with-jpeg-dir=/usr/lib/x86_64-linux-gnu --with-pdo-mysql --with-pdo-pgsql --enable-soap
sudo make clean
sudo make
sudo ls -lhart /usr/lib/apache2/modules/libphp5.*
sudo rm -rf /usr/lib/apache2/modules/libphp5.*
sudo make install
sudo ls -lhart /usr/lib/apache2/modules/libphp5.*
sudo rm -rf /usr/local/php/php-5.3.10/modules/libphp5.so
sudo mv /usr/lib/apache2/modules/libphp5.so /usr/local/php/php_5.3.10/modules/
ls -lhart /usr/local/php/php_5.3.10/modules/
sudo a2dismod php5
sudo service apache2 restart

संकलन करें और php 5.6 स्थापित करें

cd ~/Sources/php-5.6.11
sudo ./configure --prefix=/usr/local/php/php_5.6.11 --with-config-file-path=/usr/local/php/php_5.6.11/lib --with-mysql --with-libdir=/lib/x86_64-linux-gnu --with-apxs2=/usr/bin/apxs2 --enable-zip --with-gd --with-curl --with-xmlrpc --enable-calendar --enable-sockets --with-freetype-dir=/usr/lib/x86_64-linux-gnu  --with-jpeg-dir=/usr/lib/x86_64-linux-gnu --with-pdo-mysql  --with-pdo-pgsql --enable-soap
sudo make clean
sudo make
sudo ls -lhart /usr/lib/apache2/modules/libphp5.*
sudo rm -rf /usr/lib/apache2/modules/libphp5.*
sudo make install
sudo ls -lhart /usr/lib/apache2/modules/libphp5.*
sudo rm -rf /usr/local/php/php_5.6.11/modules/libphp5.so
sudo mv /usr/lib/apache2/modules/libphp5.so /usr/local/php/php_5.6.11/modules
ls -lhart /usr/local/php/php_5.6.11/modules
sudo a2dismod php5
sudo service apache2 restart

आइए उनका उपयोग करें:

$ sudo php.sh
Opciones del menu
1 => PHP 5.3.10
2 => PHP 5.6.11
Ingrese su eleccion: 1

 * Restarting web server apache2                                                                                                                                                                                                                                        apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
 ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

2

समस्या:

  1. एकल अपाचे उदाहरण दो अलग-अलग PHP संस्करण एक साथ नहीं चला सकते हैं (कम से कम जहां तक ​​मुझे पता है)।

  2. दो अलग-अलग PHP संस्करण पैकेजों से स्थापित नहीं किए जा सकते क्योंकि वे संघर्ष करेंगे (और उसी निर्देशिका को अधिलेखित करने का प्रयास करेंगे)।

उपाय:

  • बी) के लिए स्रोत से दूसरे "PHP संस्करण" को संकलित करें, मैन्युअल रूप से (या यदि आप चाहें, तो उपयुक्त पैकेज के स्रोत को पकड़ो और संघर्ष से बचने और संस्थापन पथ को संशोधित करने के लिए इसे संशोधित करें)

  • a) अलग मॉड्यूल पथ और अलग स्टार्टअप स्क्रिप्ट के साथ अपाचे के लिए कॉन्फ़िगर का अलग सेट बनाएं। और निश्चित रूप से इसे अलग बंदरगाह पर चलाते हैं।


इन बहु-स्तरीय php उदाहरण को संकलित करने के लिए कोई प्रीपैक्ड स्क्रिप्ट नहीं है? बस इसे मैन्युअल रूप से करना है और पथ को पैच करना है? तो इसका मतलब यह है कि सभी होस्टिंग कंपनी इन समानांतर संस्करण को चलाने के लिए कस्टम स्क्रिप्ट विकसित करती हैं और अपने प्रयास को कभी साझा नहीं करती हैं।
lenzai

4
एक एकल अपाचे उदाहरण एक बार में 2 php संस्करण चला सकता है
नन्हा

1

एकाधिक बनाने के बजाय VirtualHostमैं सिर्फ अपनी .htaccessफ़ाइल में नीचे का कोड जोड़ता हूं और आश्चर्यजनक रूप से यह काम करता है,

<FilesMatch \.php$>
    SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/"
</FilesMatch>

नोड: मैंने php7.2-fpmकोड का उपयोग करने से पहले ही इंस्टॉल कर लिया था।


0

यदि आप उन्हें एक ही समय में चलाना चाहते हैं, तो आपको दो अलग-अलग पोर्ट की आवश्यकता है। हो सकता है कि आप अपने अपाचे कॉन्फिगर (httpd.conf) को एक साधारण स्क्रिप्ट के साथ बदल सकते हैं जो अपाचे शुरू करने से पहले एक या दूसरे संस्करण को सही स्थिति में ले जाती है।


1
मेरे पास पहले से ही PHP 5.3.5 स्थापित है। मैं PHP 5.2.17 कैसे स्थापित कर सकता हूं? क्या आप मुझे बता सकते हैं कि इन दो संस्करणों के बीच स्विच करने के लिए मुझे कहाँ और क्या बदलना होगा? मेरी स्थापना में httpd.conf फ़ाइल खाली है।
देबिप्रसाद

0

आप प्रत्येक वेबसाइट को विभिन्न उपयोगकर्ताओं के साथ भी चला सकते हैं। ज्यादा सुरक्षित।

मैं एक बार इस aproach का इस्तेमाल किया।

http://blog.servergrove.com/2011/08/22/how-to-setup-multiple-php-versions-on-apache/

अब मुझे लगता है कि php-fpm का उपयोग करना बेहतर है ... लेकिन कई PHP संस्करणों को कॉन्फ़िगर करने के लिए यह अधिक जटिल है।

एक दूसरे का उपयोग करने के लिए कई php-fpms चलाने और अपाचे सेट करने की आवश्यकता होगी।


3
उबंटू पूछने के लिए आपका स्वागत है! जब भी यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, तो उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर होगा
user98085

मेरे पास इतना समय नहीं था कि आप कह सकें। मुझे लगता है, मैं केवल एक रास्ता दिखाना चाहता था। स्टिल को फॉर्मेटिंग सामान का उपयोग करना सीखना होगा। फिर भी धन्यवाद!
हेनरिक फर्नांडिस

0

मैंने एक बैश स्क्रिप्ट लिखी है जो मुझे मेरे बॉक्स पर स्थापित php संस्करणों के बीच आसानी से स्विच करने की अनुमति देती है। मैं कई वर्चुअल होस्ट चलाता हूं क्योंकि मेरे पास पुराने और नए कार्यक्रमों वाले ग्राहकों के साथ कई वेब परियोजनाएं हैं। इनमें से कुछ परियोजनाओं में php के पुराने संस्करणों की आवश्यकता होती है और अन्य परियोजनाओं के लिए php7.0 की आवश्यकता होती है।

मेरी टिप्पणियों के माध्यम से पढ़ें और सुनिश्चित करें कि आप समझ रहे हैं कि इसका उपयोग करने से पहले क्या चल रहा है।

#!/bin/bash
# This file is for switching php versions.  
# To run this file you must use bash, not sh
# 
# OS: Ubuntu 14.04 but should work on any linux
# Example: bash phpswitch.sh 7.0
# Written by Daniel Pflieger
# growlingflea at g mail dot com

NEWVERSION=$1  #this is the git directory target

#get the active php enabled mod by getting the array of files and store
#it to a variable
VAR=$(ls /etc/apache2/mods-enabled/php*)

#parse the returned variables and get the version of php that is active.
IFS=' ' read -r -a array <<< "$VAR"
array[0]=${array[0]#*php}
array[0]=${array[0]%.conf}


#confirm that the newversion veriable isn't empty.. if it is tell user 
#current version and exit
if [ "$NEWVERSION" = "" ]; then
echo current version is ${array[0]}.  To change version please use argument
exit 1
fi 

OLDVERSION=${array[0]}
#confirm to the user this is what they want to do
echo "Update php"  ${OLDVERSION} to ${NEWVERSION}


#give the user the opportunity to use CTRL-C to exit ot just hit return
read x

#call a2dismod function: this deactivate the current php version
sudo a2dismod php${OLDVERSION}

#call the a2enmod version.  This enables the new mode
sudo a2enmod php${NEWVERSION} 

echo "Restart service??"
read x

#restart apache
sudo service apache2 restart

0

मुझे एक ही समस्या थी जब मैं कई परियोजनाओं को संभाल रहा था। मैंने इस लेख को संदर्भित किया लेकिन यह हर बार की तरह था अगर मुझे ज़रूरत पड़ने पर संस्करणों को स्विच करना पड़ता है लेकिन इससे cli और वेब के लिए अलग से लचीलापन मिलता है।

Php5.6 से php7.0 पर जाना

अपाचे के लिए, हम कमांड का उपयोग कर सकते हैं:

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

CLI के लिए, हम कमांड का उपयोग इस प्रकार कर सकते हैं:

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

Php7.0 से php5.6 पर जाना

अपाचे के लिए, हम कमांड का उपयोग कर सकते हैं:

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

CLI के लिए, हम कमांड का उपयोग इस प्रकार कर सकते हैं:

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

हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक-केवल उत्तर अमान्य हो सकते हैं यदि लिंक किए गए पृष्ठ बदल जाते हैं। - समीक्षा से
वाल्टिनेटर

@waltinator समीक्षा के लिए धन्यवाद, इस बात का ध्यान
रखेंगे

0

यह PHP के नए संस्करण को अक्षम और सक्षम करके किया जा सकता है-

  • पुराने संस्करण पर स्विच करें -
    a2dismod php7.0
    सेवा apache2 पुनरारंभ
  • नए संस्करण
    a2enmod php7.0
    सेवा apache2 पुनरारंभ पर स्विच करें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.