สลับรุ่น PHP บน Windows

บทความนี้แจกโปรแกรมสำหรับรันคำสั่งสลับรุ่นของ 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
            • ...
          • ...
        • ...
    • php
      • php5.5 (เลขรุ่นของ PHP เฉพาะ 2 ตัว major.minor เท่านั้น ถ้ามี 5.5.2 อย่างนี้ให้รวบไปใช้แค่ 5.5)
        • dev
        • ext
        • ...
        • php.ini
        • ...
      • php5.6
      • php7.0
      • ...
      • php-running (โฟลเดอร์สำหรับเก็บ PHP รุ่นที่กำลังรันอยู่ เริ่มต้นให้ทำให้ว่างเปล่า)
    • phpswitch (โฟลเดอร์นี้ต้องมี และเป็นที่เก็บโปรแกรม phpswitch.exe)
      • phpswitch.exe

สำหรับผู้ใช้ Apache. ผู้ใช้จะต้องดาวน์โหลดมาแตกไฟล์ตามตำแหน่งที่ระบุด้วยตนเอง, ไฟล์ conf/extra/httpd-php.conf จะต้องถูก Include อยู่ใน conf/httpd.conf.

ไฟล์ต่างๆของ PHP ผู้ใช้จะต้องดาวน์โหลดมาแตกไฟล์ตามตำแหน่งที่ระบุด้วยตนเอง โดยอ้างอิงเลขรุ่นตามที่แจ้งไว้ด้านบน คือใช้แค่ major.minor 2 ชุดเท่านั้น ถ้าเป็น 5.6.35 ก็ให้รวบไปใช้แค่ 5.6 เท่านั้น.

เพิ่ม Path บน System Variables

  1. กดคีย์บอร์ดปุ่ม Windows+R แล้วพิมพ์ SystemPropertiesAdvanced เพื่อเปิด System Properties หน้า Advanced.
  2. คลิกที่ปุ่ม Environment Variables
  3. ที่กรอบ System variables ให้เพิ่มดังต่อไปนี้.
    1. Variable name: PHPRUNNING
    2. Variable value: C:\wwwserver\php\php-running
    3. กด OK.
    4. Variable name: PHPSWITCH
    5. Variable value: C:\wwwserver\phpswitch
    6. กด OK.
  4. แก้ไข Path โดยเพิ่ม %PHPRUNNING% และ %PHPSWITCH% เข้าไป ตัวอย่างเช่น ;%PHPRUNNING%;%PHPSWITCH%.
  5. ตรวจสอบให้แน่ใจว่าไม่มีตำแหน่งโฟลเดอร์ของ PHP รุ่นอื่นใดอีกในตัวแปร Path.
  6. กด 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".

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

คุณอาจใช้แท็กHTMLและแอททริบิวต์เหล่านี้: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>