ในบทความนี้เราจะนำเสนอการกำหนดค่า Apache ให้รัน PHP 7.x และ PHP 5.6 พร้อมกัน โดยวิธีการเลือกระหว่างการกำหนดค่าโดยใช้ Virtual Hosts หรือ. htaccess
ข้อกำหนดเบื้องต้น
คุณควรติดตั้ง Apache และให้บริการหน้าเว็บอยู่แล้วก่อนทำตามคำแนะนำนี้
คู่มือนี้ได้รับการทดสอบบน Ubuntu 20.04, Ubuntu 18.04 และ Ubuntu 16.04 และสามารถใช้ได้กับระบบอื่น Debian อื่นๆ
หากคุณต้องการติดตั้ง Apache บน Ubuntu โปรดดู:
- Installing Apache on Ubuntu 20.04 with Virtual Hosts
- Installing Apache on Ubuntu 18.04 / 19.10 with Virtual Hosts
- Installing Apache on Ubuntu 16.04 / 17.10 with Virtual Hosts
1. เพิ่ม Repository
เริ่มต้นด้วยการอัปเดตรายการแพ็คเกจ
sudo apt update
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
<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
<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
.
<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
<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
<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 ต่อไปนี้
<?php
phpinfo();
?>
บันทึกและออก (กด CTRL
+ X
, กด Y
แล้วกด ENTER
)
ตอนนี้เราสามารถโหลดไฟล์นี้ในเบราว์เซอร์ได้โดยไปที่ http://example.com/info.php
หรือ http://your_ip/info.php
ด้านล่างเราจะเห็นหน้าข้อมูล PHP พร้อมเวอร์ชัน PHP ที่แสดงอย่างชัดเจน

อย่าลืมลบ info.php
เนื่องจากมีข้อมูลที่อาจเป็นประโยชน์ต่อแฮกเกอร์
sudo rm /var/www/html/info.php
Source: https://devanswers.co/run-multiple-php-versions-on-apache