วิธีการติดตั้ง PHP สองเวอร์ชันและสลับไปมาระหว่างกันได้อย่างง่ายดาย?


76

ฉันต้องการมีทั้ง PHP 5.2.17 และ PHP 5.3.5 ติดตั้งบนเครื่อง Ubuntu ของฉันและเปลี่ยนตามความจำเป็นของฉัน ฉันจะบรรลุสิ่งนี้ได้อย่างไร


ในอูบุนตูมี apache.conf ใน / etc / apache2 ฉันคิดเกี่ยวกับเรื่องนี้เช่นกันบางทีฉันอาจจะทำแพคเกจบางอย่างในอนาคตมันจะมีประโยชน์มากสำหรับนักพัฒนาเว็บ

คุณสามารถทำได้ด้วย suPHP ไม่แน่ใจรายละเอียด
Marco Ceppi

1
มีบางอย่างเช่น python virtualenv ที่มีการปรับใช้ PHP แบบแยกเดี่ยวหรือไม่?
lenzai

คุณได้พิจารณาตั้งค่าเซิร์ฟเวอร์ Ubuntu เสมือนโดยใช้ซอฟต์แวร์เวอร์ชวลไลเซชันที่คุณใช้ในแบบหัวขาดหรือไม่? ฉันจะแปลกใจถ้าสิ่งที่คุณต้องการจะทำไม่ได้รับการบริการที่ดี (ไม่มีการเล่นสำนวนเจตนา) โดยการตั้งค่าดังกล่าว
Simon Hoare

1
กำหนดความหมายของการ "สลับได้อย่างง่ายดาย" ฉันใช้สิ่งนี้ในการทำงาน: เว็บเซิร์ฟเวอร์ของฉันใช้ PHP .phpและ.php5ไฟล์ต่างๆ คุณยังสามารถกำหนดค่าเซิร์ฟเวอร์ WWW ของคุณเพื่อใช้เวอร์ชัน PHP ที่แตกต่างกันสำหรับพอร์ตที่แตกต่างกัน (เช่นhttp://localhost:80และhttp://localhost:8080) หรือโดเมนที่ต่างกัน (เช่นhttp://localphp52และhttp://localphp53) ทำให้โครงสร้างโฟลเดอร์ที่เหลือทั้งหมดยังคงอยู่เพื่อให้คุณสามารถเปรียบเทียบการใช้งานเว็บแอปพลิเคชั่นเดียว URL
cprn

คำตอบ:


61

คุณสามารถใช้ตัวจัดการเวอร์ชัน php เพื่อทำสิ่งนี้ ผู้จัดการเวอร์ชันต่าง ๆ มีให้เลือกเช่น:

ฉันชอบ phpbrew หวังว่านี่จะช่วยได้


2
ขอบคุณคุณช่วยรวมคำแนะนำได้ไหม? (onnu vishadheekarikkamo?)
Tachyons

17
ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
Nanne

2
เพียงตรวจสอบลิงก์ที่พวกเขามีเอกสารที่ดีจริงๆในเว็บไซต์ของพวกเขา คุณต้องการให้ฉันคัดลอกข้อมูลจากเว็บไซต์ของพวกเขาหรือไม่?
aneeshep

7
กระแทกแดกดันหนึ่งในเหตุผลที่ไม่เพียงแค่โพสต์ลิงค์คือ linkrot ซึ่งตอนนี้โพสต์ได้รับความทุกข์
MirroredFate

@aneeshep ไม่คัดลอกวางเอกสารของพวกเขา แต่ข้อความที่เกี่ยวข้องและไม่กี่บรรทัดเกี่ยวกับ "php version manager" และวิธีใช้ / กำหนดค่าสำหรับปัญหาเฉพาะนั้นจะได้รับการต้อนรับจริงๆ
Matthieu

20

คุณสามารถรัน PHP เวอร์ชันต่าง ๆ ได้พร้อมกัน แต่มันไม่ง่ายอย่างที่คิด คุณต้องเรียกใช้หนึ่งเวอร์ชันที่ติดตั้งแยกต่างหากและให้บริการตามการตั้งค่าในการกำหนดค่า apache ของคุณ

คุณสามารถทำได้โดยใช้ fastcgi ตัวอย่างเช่นโดยทั่วไปสิ่งที่คุณกำลังมองหาคือการกำหนดค่าที่คุณเห็นในหน้านี้ คุณเพิ่มตัวจัดการอื่นในการกำหนดค่าตามสถานการณ์ / พอร์ต / โดเมนที่คุณต้องการ เคล็ดลับหลังจากติดตั้งทั้งสองเวอร์ชันเป็นขั้นตอนนี้:

=== จากหน้านั้น ==

  1. ขั้นตอนสุดท้ายคือการสร้างโฮสต์เสมือน ในท้ายที่สุดฉันมีสามไฟล์ใน / etc / apache2 / sites-enabled: 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และใช้<?กับ shorttags ปิดดูความคิดเห็น)


13

ฉันติดตั้ง php 5.6 และ 7.0 แต่นอกเหนือจากคำแนะนำทั้งหมดแล้วมันยังคงทำงานอยู่ 5.6 ดังนั้นคำสั่งนี้จะบันทึกวัน (ในกรณีของฉันฉันเลือกตัวเลือก 1 และเริ่ม apache ใหม่):

sudo update-alternatives --config php

มีประโยชน์ในการจดจำการใช้งานphpinfo()และphp -vcrosscheck เนื่องจากทั้งคู่มีค่าแตกต่างกัน
Adi Prasetyo

6

อันนี้ใช้ได้กับฉัน: https://lornajane.net/posts/2016/php-7-0-and-5-6-on-ubuntu

เหมือนกับสคริปต์จาก "Growling Flea" แต่ใช้เวอร์ชันใหม่

เพิ่ม PPA

แพ็คเกจ PHP 5.6 และ PHP 7.0 มาจาก PPA ของบุคคลที่สามที่ไม่ได้จัดทำโดยที่เก็บ Ubuntu อย่างเป็นทางการจาก Canonical PPAs ที่ฉันแนะนำที่นี่มาจากOndřejSurýผู้ทำแพ็คเกจ PHP สำหรับ Debian (ซึ่ง Ubuntu ใช้แล้ว) ดังนั้นในขณะที่มันไม่ใช่ที่เก็บข้อมูลอย่างเป็นทางการเขาไม่ได้สุ่มอย่างแน่นอน! PPA อยู่ ที่นี่

หากต้องการเพิ่ม PPA ในการตั้งค่าของคุณ:

sudo add-apt-repository ppa:ondrej/php  

จากนั้นเราจะต้องการดึงข้อมูลเกี่ยวกับข้อเสนอพิเศษจาก PPA ใหม่จากนั้นจึงเรียกใช้:

sudo apt-get update   

ติดตั้ง PHP เวอร์ชันใหม่

ฉันได้ติดตั้งแพ็คเกจ php5 บางส่วนไปแล้ว แต่ฉันไม่ได้ถอนการติดตั้งอะไรเลยฉันแค่ปล่อยให้มันทำสิ่งที่อยากทำเมื่อฉันขอให้ติดตั้งเวอร์ชันใหม่:

sudo apt-get install php5.6 php7.0

ส่งผลให้มีการร้องเรียนจำนวนมากจากความฉลาดและความขัดแย้งมากมาย ความละเอียดที่แนะนำครั้งแรกคือการลบแพ็คเกจ php5 ของสต็อคทั้งหมดเพื่อให้สามารถติดตั้ง PHP 5.6 ได้ดังนั้นฉันจึงยอมรับข้อเสนอแนะแรก

ฉันใช้ apache ดังนั้นการตั้งค่านี้ทำให้ฉัน apache ทั้งโมดูล php5.6 และ php7.0 ที่มีอยู่และโมดูล php5.6 โหลดขึ้นจริง

เช่นเดียวกับ PHP เองส่วนขยายและเครื่องมืออื่น ๆ ที่คุณคาดหวังจาก PHP นั้นมีอยู่ใน PHP ทั้งสองเวอร์ชันดังนั้นจึงง่ายที่จะเพิ่มโมดูลที่คุณต้องการ ฉันประทับใจมากกับการทำสิ่งนี้

การกำหนดค่าและการสลับเวอร์ชัน

ตอนนี้คุณมีการติดตั้ง PHP สองเวอร์ชันแยกกันอย่างสมบูรณ์ในระบบของคุณดังนั้นลองมาดูกันว่าชิ้นส่วนทั้งหมดเป็นอย่างไร!

ไฟล์กำหนดค่าทั้งหมดอยู่ใน/etc/php/5.6และ/etc/php/7.0 ตามลำดับ - ภายในที่นี่คือที่ที่คุณสามารถกำหนดค่าว่าจะโหลดส่วนขยายใดตั้งค่าการตั้งค่า ini และทุกอย่างอื่นสำหรับแต่ละรุ่นแยกกัน

ฉันเป็นผู้ใช้ apache และที่ฉันกล่าวถึงโมดูลทั้งสองมี ดังนั้นการเปลี่ยนจากที่หนึ่งไปยังอีกที่ฉันต้องทำ:

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

สำหรับผู้ใช้ nginx การเปลี่ยนแปลงนั้นง่ายมาก Digital Ocean มีเอกสารที่ดีเกี่ยวกับเรื่องนี้ (พวกเขามีเอกสารที่ยอดเยี่ยม!) ดังนั้นตรวจสอบคำแนะนำของพวกเขา: https://www.digitalocean.com/community/tutorials/how-to- upgrade-to-php-7-on-ubuntu-14-04 เนื่องจากมีส่วนในการกำหนดค่า nginx อีกครั้งเพื่อใช้ PHP เวอร์ชันอื่น

จากบรรทัดคำสั่งฉันมีทั้ง php5.6 และ php7.0 เป็นคำสั่ง ฉันยังคงมีคำสั่ง php - ดูใน / etc / ทางเลือกเพื่อดูว่ามันเชื่อมโยงกับ PHP cli * เวอร์ชันใด นอกจากนี้คุณยังสามารถตรวจสอบได้อย่างรวดเร็วว่าคุณใช้งานphp -vอะไรอยู่

* มากขึ้นโดยเฉพาะทำงานซึ่ง PHP เพื่อดูว่ารุ่นของ PHP จะถูกใช้ - แต่นี้น่าจะชี้ไป/usr/bin/phpซึ่งสำหรับฉันก็คือตัวเอง symlink ไปที่/etc/alternatives/phpคำสั่ง

ทำงานกับส่วนขยาย

PPA นี้มาพร้อมกับแพคเกจ php-pear ปกติซึ่งมีคำสั่ง pecl สำหรับ PHP ทั้งสองเวอร์ชันดังนั้นส่วนขยายใด ๆ ที่มีให้ผ่าน PECL สามารถติดตั้งได้ตามปกติ คุณจะต้องมีส่วนหัวที่เกี่ยวข้องด้วยดังนั้นควรติดตั้ง php5.6-dev หรือ php7.0-dev

เมื่อการติดตั้ง pecl เสร็จสมบูรณ์คุณจะได้รับข้อความแจ้งให้เพิ่มไฟล์ * .so ใน php.ini ของคุณ /etc/php/mods-availableในความเป็นจริงสิ่งที่ดีที่สุดที่จะทำที่นี่คือการมองสิ่งที่อยู่ใน จะมีโมดูลบางส่วนที่นี่แล้วแต่ละไฟล์ในไฟล์ของตัวเองตั้งชื่อตามนามสกุลและสิ้นสุดใน. ini คุณสามารถคัดลอกเพื่อใช้เป็นเทมเพลตหรือสร้างของคุณเองและใส่การกำหนดค่าที่เกี่ยวข้องทั้งหมดสำหรับส่วนขยาย (อย่างน้อยคุณต้องการextension=[extensionName].so)

เมื่อส่วนขยายใหม่พร้อมใช้งานแล้วให้เปิดใช้งานแล้วตรวจสอบโดยทำดังนี้

sudo phpenmod extension  
php -m  

นี้จะสร้าง symlinks ในสถานที่ที่เหมาะสมสำหรับรุ่นปัจจุบันของ PHP php -mในการโหลดโมดูลนี้และคุณจะเห็นมันในรายการของโมดูลออกจากที่ เคล็ดลับสำหรับมืออาชีพ: หากคุณไม่เห็นมันในผลลัพธ์ให้เลื่อนไปจนถึงด้านบนสุดของเอาต์พุตและดูว่ามีข้อความแสดงข้อผิดพลาดที่เป็นประโยชน์หรือไม่


3

จากโพสต์นี้ฉันเพิ่งจะเรียงลำดับคำสั่งและอธิบายตามลำดับขณะที่ฉันเสิร์ฟ (Ubuntu 12.04)

วิธีนี้ให้:

  1. สคริปต์พร้อมเมนูที่อนุญาตให้สลับระหว่างเวอร์ชัน php ที่ติดตั้ง (ไม่ใช่ทั้งสองอย่างในเวลาเดียวกัน)

  2. ติดตั้ง PHP เวอร์ชันต่างๆบนเซิร์ฟเวอร์ของคุณ

  3. ไฟล์ conf แยก

ติดตั้งทุกรุ่นที่คุณต้องการ (ฉันมีสองอัน)

ติดตั้งการพึ่งพา:

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. อินสแตนซ์ apache เดียวไม่สามารถเรียกใช้ PHP รุ่นที่แตกต่างกันสองรุ่นพร้อมกัน (อย่างน้อยเท่าที่ฉันรู้)

  2. ไม่สามารถติดตั้ง PHP เวอร์ชันที่แตกต่างกันสองแบบได้เนื่องจากจะขัดแย้งกัน (และลองเขียนทับไดเรกทอรีเดียวกัน)

วิธีการแก้:

  • สำหรับ b) รวบรวม“ เวอร์ชั่น PHP” อื่น ๆ จากแหล่งที่มาด้วยตนเอง (หรือถ้าคุณต้องการคว้าแหล่งที่มาของแพ็คเกจที่เหมาะสมและแก้ไขเพื่อหลีกเลี่ยงความขัดแย้งและเพื่อปรับเปลี่ยนเส้นทางการติดตั้ง)

  • สำหรับ a) สร้างชุดการกำหนดค่าแยกต่างหากสำหรับ apache ที่มีเส้นทางโมดูลที่แตกต่างกันและสคริปต์เริ่มต้นแยกต่างหาก และแน่นอนรันบนพอร์ตแยกต่างหาก


ไม่มีสคริปต์ที่จัดทำแพคเกจไว้ล่วงหน้าเพื่อรวบรวมอินสแตนซ์ของ php parallele หลายรายการเหล่านี้หรือไม่ เพียงทำเองและแก้ไขเส้นทาง? ดังนั้นนี่หมายความว่าทุก บริษัท ที่ให้บริการพัฒนามีสคริปต์ที่กำหนดเองเพื่อเรียกใช้เวอร์ชันขนานเหล่านี้และไม่เคยใช้ความพยายาม
lenzai

4
อินสแตนซ์ apache เดียวสามารถเรียกใช้ 2 รุ่น php ในครั้งเดียว
Nanne

1

แทนที่จะทำหลายอย่างVirtualHostฉันแค่เพิ่มโค้ดด้านล่างใน.htaccessไฟล์ของฉันและมันก็น่าประหลาดใจ

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

โหนด: ฉันติดตั้งแล้วphp7.2-fpmก่อนใช้รหัส


0

หากคุณต้องการรันในเวลาเดียวกันคุณต้องใช้พอร์ตที่ต่างกันสองพอร์ต บางทีคุณสามารถเปลี่ยนการตั้งค่า apache (httpd.conf) ด้วยสคริปต์อย่างง่ายที่จะย้ายหนึ่งหรือรุ่นอื่นไปยังตำแหน่งที่ถูกต้องก่อนที่จะเริ่ม apache


1
ฉันติดตั้ง PHP 5.3.5 แล้ว ฉันจะติดตั้ง PHP 5.2.17 ได้อย่างไร คุณช่วยบอกฉันทีว่าฉันต้องเปลี่ยนอะไรเพื่อสลับไปมาระหว่างสองเวอร์ชั่นนี้และที่ไหน ไฟล์ httpd.conf ว่างเปล่าในการติดตั้งของฉัน
เปิดตัวเด

0

นอกจากนี้คุณยังสามารถเรียกใช้แต่ละเว็บไซต์ด้วยผู้ใช้ที่แตกต่างกัน ปลอดภัยยิ่งขึ้น

ฉันเคยใช้โปรแกรมนี้ครั้งเดียว

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

ตอนนี้ฉันคิดว่ามันจะดีกว่าถ้าใช้ php-fpm ...

จะต้องเรียกใช้หลายชุด php-fpms และตั้งค่า apache ให้ใช้งานกัน


3
ยินดีต้อนรับสู่ถาม Ubuntu! ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
user98085

ฉันไม่มีเวลาพอที่จะทำอย่างที่คุณพูด ฉันเดาว่าฉันแค่ต้องการแสดงวิธี สไตล์ต้องเรียนรู้วิธีใช้สิ่งที่จัดทำขึ้น ขอขอบคุณ!
Henrique Fernandes

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

สำหรับ Apache เราสามารถใช้คำสั่งดังนี้

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

สำหรับ Apache เราสามารถใช้คำสั่งดังนี้

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

สำหรับ CLI เราสามารถใช้คำสั่งเป็น:

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

แม้ว่าลิงก์นี้อาจตอบคำถามได้ดีกว่าหากรวมส่วนสำคัญของคำตอบไว้ที่นี่และให้ลิงก์สำหรับการอ้างอิง คำตอบสำหรับลิงค์เท่านั้นอาจไม่ถูกต้องหากหน้าเว็บที่เชื่อมโยงนั้นเปลี่ยนแปลง - จากการทบทวน
waltinator

@waltinator ขอบคุณสำหรับความคิดเห็นแน่นอนว่าจะดูแลเรื่องนี้
Shivdhwaj Pandey

0

มันสามารถทำได้โดยการปิดการใช้งานและเปิดใช้งาน PHP รุ่นใหม่

  • เปลี่ยนเป็นรุ่นเก่ากว่า -
    a2dismod php7.0
    บริการ apache2 รีสตาร์ท
  • เปลี่ยนเป็น
    a2enmod php7.0
    service apache2 เริ่มใหม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.