บทความนี้แจกโปรแกรมสำหรับรันคำสั่งสลับรุ่นของ PHP ที่ทำงานบน Windows. โดยตัวโปรแกรมนี้สามารถนำไปใช้แทน phpswitch ในบทความ สลับรุ่น PHP ใน Apache บน Windows ได้เลยทันที เพราะใช้โครงสร้างโฟลเดอร์เดียวกัน.
โปรแกรมนี้สามารถใช้สลับรุ่น PHP CLI ได้พร้อมๆกับบน Apache แต่ความแตกต่างคือ เมื่อไม่มี Apache หรือ web server ใดบนเครื่อง มันจะไม่พยายามสั่งปิด/เปิด service นั้นๆ เหมาะสำหรับผู้ใช้ CLI ล้วนๆด้วยเช่นกัน.
ความต้องการของระบบ
- Windows 10 64 bit.
- Linux 64 bit.
- Administrator privilege (Windows UAC or Linux sudo).
ติดตั้ง
ให้กำหนดโฟลเดอร์ที่ใดที่หนึ่งเป็นหลัก เพื่อให้การรันคำสั่งทำได้สั้น ไม่ต้องใส่ argument ระบุตำแหน่งใดๆเพิ่มอีก. สมมุติว่าเราจะติดตั้งไว้ใน C:\wwwserver เป็นหลัก ภายใน C:\wwwserver จะต้องมีโครงสร้างดังต่อไปนี้ (โฟลเดอร์ใดไม่จำเป็นจะมีวงเล็บบอก).
- wwwserver
- apache (เฉพาะผู้ใช้ Apache web server เท่านั้น)
- Apache24 (24 หมายถึงรุ่น 2.4)
- bin
- cgi-bin
- conf
- extra
- httpd-php.conf (ต้องมี กรณีที่ใช้ Apache web server)
- httpd-php-5.5.conf (เลขรุ่นของ PHP เฉพาะ 2 ตัว major.minor เท่านั้น ถ้ามี 5.5.2 อย่างนี้ให้รวบไปใช้แค่ 5.5)
- httpd-php-5.6.conf
- httpd-php-7.0.conf
- ...
- ...
- extra
- ...
- Apache24 (24 หมายถึงรุ่น 2.4)
- php
- php5.5 (เลขรุ่นของ PHP เฉพาะ 2 ตัว major.minor เท่านั้น ถ้ามี 5.5.2 อย่างนี้ให้รวบไปใช้แค่ 5.5)
- dev
- ext
- ...
- php.ini
- ...
- php5.6
- php7.0
- ...
- php-running (โฟลเดอร์สำหรับเก็บ PHP รุ่นที่กำลังรันอยู่ เริ่มต้นให้ทำให้ว่างเปล่า)
- php5.5 (เลขรุ่นของ PHP เฉพาะ 2 ตัว major.minor เท่านั้น ถ้ามี 5.5.2 อย่างนี้ให้รวบไปใช้แค่ 5.5)
- phpswitch (โฟลเดอร์นี้ต้องมี และเป็นที่เก็บโปรแกรม phpswitch.exe)
- phpswitch.exe
- apache (เฉพาะผู้ใช้ Apache web server เท่านั้น)
สำหรับผู้ใช้ Apache. ผู้ใช้จะต้องดาวน์โหลดมาแตกไฟล์ตามตำแหน่งที่ระบุด้วยตนเอง, ไฟล์ conf/extra/httpd-php.conf จะต้องถูก Include อยู่ใน conf/httpd.conf.
ไฟล์ต่างๆของ PHP ผู้ใช้จะต้องดาวน์โหลดมาแตกไฟล์ตามตำแหน่งที่ระบุด้วยตนเอง โดยอ้างอิงเลขรุ่นตามที่แจ้งไว้ด้านบน คือใช้แค่ major.minor 2 ชุดเท่านั้น ถ้าเป็น 5.6.35 ก็ให้รวบไปใช้แค่ 5.6 เท่านั้น.
เพิ่ม Path บน System Variables
- กดคีย์บอร์ดปุ่ม Windows+R แล้วพิมพ์ SystemPropertiesAdvanced เพื่อเปิด System Properties หน้า Advanced.
- คลิกที่ปุ่ม Environment Variables
- ที่กรอบ System variables ให้เพิ่มดังต่อไปนี้.
- Variable name:
PHPRUNNING
- Variable value:
C:\wwwserver\php\php-running
- กด OK.
- Variable name:
PHPSWITCH
- Variable value:
C:\wwwserver\phpswitch
- กด OK.
- Variable name:
- แก้ไข Path โดยเพิ่ม
%PHPRUNNING%
และ%PHPSWITCH%
เข้าไป ตัวอย่างเช่น;%PHPRUNNING%;%PHPSWITCH%
. - ตรวจสอบให้แน่ใจว่าไม่มีตำแหน่งโฟลเดอร์ของ PHP รุ่นอื่นใดอีกในตัวแปร Path.
- กด OK ทั้งหมด.
phpswitch.json
phpswitch.json เป็นไฟล์ตั้งค่าที่จะทำให้การกำหนดอะไรต่างๆได้ละเอียดมากขึ้น. ไฟล์นี้สามารถเรียกทำงานได้อัตโนมัติถ้าหากวางคู่กันกับโปรแกรม phpswitch.
ตัวอย่างไฟล์
{
"phpVersionsDir": "D:\\wwwserver-x64\\php",
"phpRunningDir": "D:\\wwwserver-x64\\php\\php-running",
"webserverServiceName": ["apache"],
"apacheDir": "D:\\wwwserver-x64\\apache\\Apache24",
"apacheUpdateConfig": true,
"additionalCopy": {
"7.0": [
{
"copyFromDir": "D:\\ImageMagick\.9.3-7-vc14-x64\\bin",
"searchPattern": "CORE_*.dll",
"copyTo": "."
},
{
"copyFromDir": "D:\\ImageMagick\.9.3-7-vc14-x64\\bin",
"searchPattern": "IM_*.dll",
"copyTo": "."
}
],
"7.1": [
{
"copyFromDir": "D:\\ImageMagick\.9.3-7-vc14-x64\\bin",
"searchPattern": "CORE_*.dll",
"copyTo": "."
},
{
"copyFromDir": "D:\\ImageMagick\.9.3-7-vc14-x64\\bin",
"searchPattern": "IM_*.dll",
"copyTo": "."
}
]
},
"_comment": "Copy and paste this file into the folder where phpswitch application is. Modify path above to your real path. Then run the `phpswitch` command." }
การจะไม่ให้ start, stop Service ให้กำหนด webserverServiceName
เป็นค่าว่างเปล่า. หากจะต้องการ start, stop Service หลายตัวที่มีชื่อคล้ายกัน เช่น Apachex86, Apachex64 ก็ให้กำหนดเป็น apache
.
ถ้ากำหนด apacheUpdateConfig
เป็น false
ค่าในไฟล์ conf ของ Apache จะไม่มีการอัพเดท.
การกำหนด additionalCopy
ควรจะต้องมีเลขรุ่น PHP เป็น key และรายการของไฟล์เป็น array. สำหรับค่าที่จะใช้ใน searchPattern โปรดอ่านได้ที่ เอกสาร .Net.
copyTo
จะสัมพันธ์กับโฟลเดอร์ php-running.
การรัน phpswitch
เปิดโปรแกรม command console ของคุณ แล้วสั่ง phpswitch x.x
โดยที่ x.x
คือเลขรุ่น PHP. โปรแกรมจะทำการอ่านค่าจาก phpswitch.json ที่อยู่คู่กันโดยอัตโนมัติ. ถ้าหากจะกำหนด phpswitch.json จากที่อื่น สามารถทำได้โดยเพิ่ม option --config-json
ตัวอย่างเช่น. phpswitch 7.4 --config-json "D:\phpswitch.json"
.