User Rating: 0 / 5

ในบทความนี้เราจะนำเสนอการกำหนดค่า Apache ให้รัน PHP 7.x และ PHP 5.6 พร้อมกัน โดยวิธีการเลือกระหว่างการกำหนดค่าโดยใช้ Virtual Hosts หรือ. htaccess

ข้อกำหนดเบื้องต้น

คุณควรติดตั้ง Apache และให้บริการหน้าเว็บอยู่แล้วก่อนทำตามคำแนะนำนี้

คู่มือนี้ได้รับการทดสอบบน Ubuntu 20.04, Ubuntu 18.04 และ Ubuntu 16.04 และสามารถใช้ได้กับระบบอื่น Debian อื่นๆ

หากคุณต้องการติดตั้ง Apache บน Ubuntu โปรดดู:

1. เพิ่ม Repository

เริ่มต้นด้วยการอัปเดตรายการแพ็คเกจ

sudo apt update 
 
สำหรับผู้ใช้ Ubuntu 20.04 และ 18.04 , ติดตั้ง libapache2-mod-fcgid.
sudo apt install libapache2-mod-fcgid
 

ผู้ใช้ Ubuntu 16.04 , ติดตั้ง libapache2-mod-fastcgi.

sudo apt install libapache2-mod-fastcgi
 

คุณอาจจะต้องการ software-properties-common ในกรณีที่เพิ่ม repository ด้วย add-apt-repository.

sudo apt install software-properties-common
 

เราจะเพิ่ม Ondřej’s PHP repository นั้นจะทำให้เราสามารถดาวน์โหลด co-installable versions ของ PHP 5.6 และ PHP 7.x, จากนั้นรอัปเดตรายการแพ็คเกจอีกครั้งหนึ่ง

sudo add-apt-repository ppa:ondrej/php && sudo apt update
 

กด ENTER เมื่อได้รับแจ้งให้เพิ่ม repository.

2. ติดตั้ง PHP

ตอนนี้คุณสามารถติดตั้ง PHP เวอร์ชันที่คุณต้องการได้แล้ว พื้นที่เก็บข้อมูลของ Ondřej ได้จัดเตรียม PHP 5.6 และ PHP 7.x. เอาไว้แล้ว ในตัวอย่างนี้เราจะติดตั้ง PHP 5.6 และ PHP 7.2

sudo apt install php5.6 php5.6-fpm
 
sudo apt install php7.2 php7.2-fpm
 

กด y และ ENTER เมื่อได้รับแจ้งให้ติดตั้ง

เมื่อติดตั้งแล้วคุณควรมีซ็อกเก็ตใหม่สองตัวใน /var/run/php/.

ls /var/run/php/
 
total 8
-rw-r--r-- 1 root     root     4 Feb 17 16:50 php5.6-fpm.pid
srw-rw---- 1 www-data www-data 0 Feb 17 16:50 php5.6-fpm.sock
-rw-r--r-- 1 root     root     5 Feb 17 16:51 php7.2-fpm.pid
srw-rw---- 1 www-data www-data 0 Feb 17 16:51 php7.2-fpm.sock
 

ในขั้นตอนที่ 3 เราจะใช้คำสั่ง <FilesMatch> เพื่อบอก Apache ว่าจะใช้ซ็อกเก็ต PHP ใด

ส่วนขยาย MySQL

หากคุณตั้งใจจะใช้ MySQL คุณต้องติดตั้งส่วนขยาย MySQL สำหรับทั้ง PHP 7.x และ PHP 5.6

sudo apt install php5.6-mysql
 
sudo apt install php7.2-mysql
 

ส่วนขยาย/ไลบรารี อื่น ๆ

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

sudo apt install php5.6-curl
 
sudo apt install php7.2-curl
 

3. การกำหนดค่า Apache

เราจำเป็นต้องเพิ่มโมดูล Apache โดยใช้ a2enmod.

ผู้ใช้งาน Ubuntu 20.04 / 18.04

sudo a2enmod actions alias proxy_fcgi fcgid
 

ผู้ใช้งาน Ubuntu 16.04

sudo a2enmod actions alias proxy_fcgi fastcgi
 

รีสตาร์ท Apache.

sudo systemctl restart apache2
 

ตอนนี้คุณสามารถใช้ Virtual Hosts หรือ .htaccess เพื่อสั่งให้ Apache ใช้ PHP เวอร์ชันที่ต้องการใช้

4. วิธีกำหนดค่าด้วย Virtual Hosts

เปิดไฟล์ Apache .conf ของคุณขึ้นมาอและเพิ่ม <FilesMatch> เพื่อสั่งการ Virtual Host ของคุณ

คำสั่งนี้จะสั่งให้ Apache ใช้ซ็อกเก็ต PHP ที่ต้องการใช้

ตัวอย่าง PHP 5.6

/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
    <FilesMatch \.php> # Apache 2.4.10+ can proxy to unix socket 
        SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost/" 
    </FilesMatch> 
</VirtualHost> 
 

อย่าลืมรีสตาร์ท Apache หลังจากทำการเปลี่ยนแปลงกับ Virtual Hosts

sudo systemctl restart apache2
 

ตัวอย่าง PHP 7.2 Example

/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
    <FilesMatch \.php> # Apache 2.4.10+ can proxy to unix socket 
        SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/" 
    </FilesMatch> 
</VirtualHost>
 

อย่าลืมรีสตาร์ท Apache หลังจากทำการเปลี่ยนแปลงกับ Virtual Hosts

sudo systemctl restart apache2
 

5.วิธีกำหนดค่าด้วย htaccess

คุณสามารถเพิ่มคำสั่ง <FilesMatch> ลงในไฟล์ .htaccess ของคุณ ก่อนที่คุณจะดำเนิน ควรทำการตรวจสอบให้แน่ใจว่าได้เปิดใช้งาน AllowOverride มิฉะนั้น Apache จะเพิกเฉยกับ .htaccess.

เปิดไฟล์กำหนดค่า Apache

sudo nano /etc/apache2/apache2.conf
 

เลื่อนลงไปดูในส่วนต่อไปนี้และตรวจสอบให้แน่ใจว่า AllowOverride ตั้งค่าเป็น All.

/etc/apache2/apache2.conf
<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

บันทึกและออก (กด CTRL + X, กด Y แล้วกด ENTER

รีสตาร์ท Apache.

sudo systemctl restart apache2

ตอนนี้คุณสามารถเพิ่มคำสั่ง <FilesMatch> ไปที่ directive to .htaccess

ตัวอย่าง PHP 5.6

.htaccess
<FilesMatch \.php> 
    # Apache 2.4.10+ can proxy to unix socket 
    SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost/" 
</FilesMatch>
 

ตัวอย่าง PHP 7.2

.htaccess
<FilesMatch \.php> 
    # Apache 2.4.10+ can proxy to unix socket 
    SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/" 
</FilesMatch>
 

6. ทดสอบ PHP

หากต้องการดูเวอร์ชันของ PHP Apache ให้สร้างไฟล์ใหม่ชื่อ info.php ในรูทเอกสารเว็บของคุณ

ในตัวอย่างนี้เราจะสร้างไฟล์ใหม่ใน /var/www/html/

sudo nano /var/www/html/info.php
 

ป้อนโค๊ด PHP ต่อไปนี้

/var/www/html/info.php
<?php
phpinfo(); 
?>
 

บันทึกและออก (กด CTRL + X, กด Y แล้วกด ENTER

ตอนนี้เราสามารถโหลดไฟล์นี้ในเบราว์เซอร์ได้โดยไปที่ http://example.com/info.php หรือ http://your_ip/info.php

ด้านล่างเราจะเห็นหน้าข้อมูล PHP พร้อมเวอร์ชัน PHP ที่แสดงอย่างชัดเจน

PHP 7 info test page on Apache and Ubuntu 18.04 Bionic Beaver

อย่าลืมลบ info.php เนื่องจากมีข้อมูลที่อาจเป็นประโยชน์ต่อแฮกเกอร์

sudo rm /var/www/html/info.php

Source: https://devanswers.co/run-multiple-php-versions-on-apache

Pin It

More DIY Articles

  • Automotive วันอาทิตย์, 06 ธันวาคม 2552

    หลังจากเริ่มใช้รถมาตั้งแต่ปี 2003 รู้สึกว่ามันค่อนข้างจะมีค่าใช้จ่ายในการบำรุงรักษาค่อนข้างสูง แต่จากที่ใช้งานมา ส่วนใหญ่จะเกิดมาจากการแก้ปัญหาไม่ถูกจุด...

  • Computer วันอาทิตย์, 21 กุมภาพันธ์ 2553

      ตั้งแต่เล่น Internet ผมไม่ค่อยได้ให้ความสำคัญกับ DNS เท่าไรส่วนใหญ่ก็จะตั้งค่าไว้เป็นแบบอัตโนมัติ เพราะคิดว่าทาง ISP คงไม่มีปัญหาอะไร ก่อนอื่นเรามาดูหน้าที่คราวๆของ DNS (Domain Name Server)...

  • Electronics วันพฤหัสบดี, 12 กรกฎาคม 2555

    Water Softener หรือเครื่องปรับสภาพน้ำเพื่อให้มีความกระด้างน้อยลง โดยปกติน้ำที่มีความกระด้างมากจะมีส่วนประกอบไบคาร์บอเนตของแคลเซี่ยมและแมกนีเซียม...

  • Alfa Romeo 156 วันพุธ, 03 กุมภาพันธ์ 2559

    อาการก้านเปลี่ยนเกียร์ Shifter shaft ติดค้างทำให้ชุด Selespeed ไม่สามารถทำการเปลี่ยนเกียร์และกลับมาอยู่ในตำแหน่งเกียร์ N ได้ ทำให้สตา์ทเครื่องได้แต่เข้าเกียร์ไม่ได้...