มีวิธีใช้สองเวอร์ชัน PHP ใน XAMPP หรือไม่?


157

เรากำลังเรียกใช้ XAMPP ด้วย PHP 7.0 เพราะผลิตภัณฑ์ใหม่ของเราต้องการ PHP 7

แต่มีโครงการเก่า ๆ ที่ใช้ฟังก์ชั่นเช่นmysql_connectฯลฯ สิ่งเหล่านั้นจะถูกลบใน PHP 7.0

ดังนั้นมีวิธีที่จะเปลี่ยน PHP เวอร์ชันใน XAMPP ได้อย่างง่ายดายหรือไม่?

หมายเหตุ : โปรดอย่าแนะนำให้อัพเกรดโครงการเก่าให้เข้ากันได้กับเวอร์ชันใหม่เพราะฉันไม่อยู่ในฐานะที่จะทำเพราะการตัดสินใจนั้นฉันไม่ได้รับในฐานะนักพัฒนา (แค่พนักงาน)


ฉันไม่คิดว่าจะมีวิธีแก้ปัญหาสำหรับสิ่งที่คุณต้องการทำนอกเหนือจากการอัพเกรด นอกจากนี้คุณไม่ควรหาวิธีที่จะทำให้ API เก่าและเลิกใช้งานได้ ควรลบออกทั้งหมด เห็นได้ชัดว่าเป็นงานจำนวนมาก แต่จะรับประกันความอุ่นใจ
Rotimi

1
ฉันหยุดและเริ่ม Apache เมื่อฉันต้องการสลับรุ่น PHP ใน MAMP มันเจ็บปวด แต่ก็ใช้ได้
Scott C Wilson

คุณสามารถบูตคู่ได้

คุณสามารถสร้างโฮสต์เสมือนจากนั้นระบุเวอร์ชัน php สำหรับแต่ละรายการ
Aref Ben Lazrek

2
@IlmariKaronen ฉันต้องการสลับระหว่างพวกเขาในเวิร์กสเตชันการพัฒนาของคุณ เพียงฉันต้องการใช้ PHP 5 เมื่อฉันทำโครงการ A ฉันต้องการ PHP 7 เมื่อฉันทำโครงการ B. แม้คำตอบที่ได้รับความนิยมสูงสุดก็ไม่ทำงานฉันไม่สามารถหาได้ ... และผู้ใช้จำนวนมาก ..
ฉัน เป็นคนที่โง่ที่สุดที่

คำตอบ:


133

สลับไปมาระหว่างรุ่น PHP ทำไมเมื่อคุณสามารถใช้PHP รุ่นหลายในเวลาเดียวกันกับการติดตั้ง XAMPP เดียว ? ด้วยการติดตั้ง xampp เพียงครั้งเดียวคุณมี 2 ตัวเลือก:

  1. ใช้งาน PHP เวอร์ชันเก่าสำหรับไดเรกทอรีของโครงการเก่าของคุณเท่านั้น: สิ่งนี้จะให้บริการตามวัตถุประสงค์ส่วนใหญ่คุณอาจมีโครงการเก่าหนึ่งหรือสองโครงการที่คุณตั้งใจจะใช้กับ PHP รุ่นเก่า เพียงกำหนดค่า xampp ให้เรียกใช้ PHP เวอร์ชันเก่ากว่าสำหรับไดเรกทอรีโครงการเหล่านั้นเท่านั้น

  2. ใช้งาน PHP เวอร์ชั่นเก่าบนพอร์ตที่แยกต่างหากของ xampp:บางครั้งคุณอาจกำลังอัพเกรดและโปรเจ็กต์เก่าเป็นเวอร์ชัน PHP ล่าสุดเมื่อคุณต้องการรันโปรเจ็กต์เดียวกันกับ PHP เวอร์ชันใหม่และเก่า จากนั้นคุณสามารถตั้งค่า PHP เวอร์ชันเก่าบนพอร์ตอื่น (เช่น 8056) ดังนั้นเมื่อคุณไปที่http://localhost/any_project/xampp จะรัน PHP 7 และเมื่อคุณไปที่http://localhost:8056/any_project/xampp จะรัน PHP 5.6

  3. ใช้งาน PHP เวอร์ชั่นเก่าบน virtualhost:คุณสามารถสร้าง virtualhost เช่น localhost56 เพื่อรัน PHP 5.6 ในขณะที่คุณสามารถใช้ PHP 7 บน localhost

ให้ตั้งค่า

ขั้นตอนที่ 1:ดาวน์โหลด PHP

ดังนั้นคุณจึงมี PHP 7 ที่ทำงานภายใต้ xampp คุณต้องการที่จะเพิ่ม PHP เวอร์ชันเก่าลงไปด้วย PHP 5.6 ดาวน์โหลดเวอร์ชัน zip ของ PHP zip zip จาก nts (Non Thread Safe) จากphp.net (ดูที่เก็บถาวรสำหรับเวอร์ชั่นเก่ากว่า) และแตกไฟล์c:\xampp\php56ออกมา รุ่นที่ปลอดภัยของเธรดไม่รวม php-cgi.exe

ขั้นตอนที่ 2:กำหนดค่าphp.ini

เปิดc:\xampp\php56\php.iniไฟล์ใน Notepad หากไฟล์ไม่มีอยู่php.ini-developmentให้คัดลอกphp.iniและเปิดใน notepad จากนั้นยกเลิกข้อคิดเห็นบรรทัดต่อไปนี้:

extension_dir = "ext"

ขั้นตอนที่ 3:กำหนดค่า apache

แผงควบคุม XAMPP เปิดให้คลิกที่ปุ่มการตั้งค่าสำหรับ Apache Apache (httpd-xampp.conf)และคลิก ไฟล์ข้อความจะเปิดขึ้นตั้งค่าต่อไปนี้ไว้ที่ด้านล่างของไฟล์:

ScriptAlias /php56 "C:/xampp/php56"
Action application/x-httpd-php56-cgi /php56/php-cgi.exe
<Directory "C:/xampp/php56">
    AllowOverride None
    Options None
    Require all denied
    <Files "php-cgi.exe">
        Require all granted
    </Files>
</Directory>

หมายเหตุ: คุณสามารถเพิ่ม PHP เวอร์ชันอื่น ๆ ลงในการติดตั้ง xampp ของคุณได้ตามขั้นตอนที่ 1 ถึง 3 หากคุณต้องการ

ขั้นตอนที่ 4 (ตัวเลือก 1): [เพิ่มไดเรกทอรีเพื่อเรียกใช้รุ่น PHP เฉพาะ]

ตอนนี้คุณสามารถตั้งค่าไดเรกทอรีที่จะทำงานใน PHP 5.6 เพียงเพิ่มสิ่งต่อไปนี้ที่ด้านล่างของไฟล์กำหนดค่าเพื่อตั้งค่าไดเรกทอรี

<Directory "C:\xampp\htdocs\my_old_project1">
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php56-cgi
    </FilesMatch>
</Directory>

<Directory "C:\xampp\htdocs\my_old_project2">
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php56-cgi
    </FilesMatch>
</Directory>

ขั้นตอนที่ 4 (ตัวเลือก 2): [เรียกใช้เวอร์ชัน PHP รุ่นเก่าบนพอร์ตแยก]

ตอนนี้การตั้งค่า PHP v5.6 พอร์ต 8056 เพิ่มรหัสต่อไปนี้ที่ด้านล่างของไฟล์ config

Listen 8056
<VirtualHost *:8056>
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php56-cgi
    </FilesMatch>
</VirtualHost>

ขั้นตอนที่ 4 (ตัวเลือก 3): [เรียกใช้ PHP เวอร์ชันเก่ากว่าบน virtualhost]

ในการสร้าง virtualhost (localhost56) ในไดเรกทอรี (htdocs56) เพื่อใช้ PHP v5.6 บนhttp: // localhost56ให้สร้างไดเรกทอรี htdocs56 ในตำแหน่งที่คุณต้องการและเพิ่ม localhost56 ลงในไฟล์โฮสต์ของคุณ ( ดูวิธีการ ) จากนั้นเพิ่มรหัสต่อไปนี้ ไปที่ด้านล่างของไฟล์ httpd-xampp.conf

<VirtualHost localhost56:80>
    DocumentRoot "C:\xampp\htdocs56"
    ServerName localhost56
    <Directory "C:\xampp\htdocs56">
        Require all granted    
    </Directory>
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php56-cgi
    </FilesMatch>
</VirtualHost>

เสร็จสิ้น:บันทึกและรีสตาร์ท Apache

บันทึกและปิดไฟล์กำหนดค่าเริ่มต้นใหม่ apache จากแผงควบคุม xampp หากคุณไปที่ตัวเลือกที่ 2 คุณสามารถดูพอร์ตเพิ่มเติม (8056) ที่ปรากฏในแผงควบคุม xampp ของคุณ

ป้อนคำอธิบายรูปภาพที่นี่

อัพเดตสำหรับข้อผิดพลาด:
ส่วนหัวที่ผิดรูปแบบจากสคริปต์ 'php-cgi.exe': ส่วนหัวไม่ถูกต้อง

หากคุณพบข้อผิดพลาดด้านบนให้เปิดhttpd-xampp.confอีกครั้งและใส่เครื่องหมายบรรทัดต่อไปนี้พร้อมกับเครื่องหมาย # (อักขระแฮช)

SetEnv PHPRC "\\path\\to\\xampp\\php"

9
สวัสดีฉันลองวิธีนี้ (ขั้นตอนที่ 4 ตัวเลือก 1) แต่ได้รับข้อผิดพลาดส่วนหัวที่ผิดรูปแบบจากสคริปต์ 'php-cgi.exe': ส่วนหัวไม่ดี: <br /> ความคิดใด ๆ ที่อาจเป็นปัญหาได้
Priyanshu

@Priyanshu การติดตั้ง PHP ของคุณตกลงไหม คุณสามารถเรียกใช้ไฟล์ PHP จากบรรทัดคำสั่งเช่นphp somefile.phpไม่มีข้อผิดพลาดใด ๆ ?
Munim Munna

2
คำตอบไม่ได้มีรหัสที่จะรวมอีกต่อไปSetEnv PHPRCดังนั้นฉันไม่สามารถออกความเห็น แต่ฉันยังคงได้รับข้อผิดพลาดนั้น :(
Brett

1
สวัสดี เมื่อฉันเรียกใช้ localhost: 8056 ฉันได้รับหน้าวัตถุไม่พบ
nas

1
บางคนสามารถทำงานกับ php หลายเวอร์ชันด้วย xdebug ได้ไหม ฉันได้รับError message: End of script output before headers: php-cgi.exe
Noman

87

คุณสามารถดาวน์โหลด PHP เวอร์ชันใดก็ได้ที่คุณต้องการและใส่ลงในไดเรกทอรีของตัวเองเช่น

c:\php5\

c:\php7\

สิ่งที่คุณต้องทำคือบอกเว็บเซิร์ฟเวอร์ของคุณ (Apache) ว่าจะใช้ PHP เวอร์ชันไหนซึ่งคุณทำได้โดยการโหลดโมดูลที่เหมาะสม ใน Apache คุณสามารถทำได้โดยค้นหาไฟล์httpd.confจากนั้นแก้ไขบรรทัดที่เหมาะสม:

LoadModule php7_module c:\php7\libphp7.so

คุณจะต้องหาเส้นทางที่ถูกต้องแน่นอน - นี่เป็นเพียงภาพประกอบ

บันทึกhttpd.confและรีสตาร์ทเซิร์ฟเวอร์ของคุณ หมายเหตุหากคุณไม่รีสตาร์ทการเปลี่ยนแปลงจะไม่มีผล

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

ใช้ PHP 5:

LoadModule php5_module c:\php5\libphp5.so
#LoadModule php7_module c:\php7\libphp7.so

ใช้ PHP 7:

#LoadModule php5_module c:\php5\libphp5.so
LoadModule php7_module c:\php7\libphp7.so

คุณไม่จำเป็นต้องใช้ XAMPP หลายรุ่นหรือใช้การบูทคู่หรือใช้เครื่องอื่นหรือ "วิธีแก้ปัญหา" อื่น ๆ ที่แนะนำวิธีแก้ไขปัญหาที่ซับซ้อน OP ต้องการใช้ XAMPP และแจ้งให้ทราบว่าจะใช้ PHP เวอร์ชันใด นี่เป็นวิธีที่รวดเร็วและมีประสิทธิภาพที่สุดในการดำเนินการและต้องการเพียงการติดตั้ง XAMPP เพียงหนึ่งครั้ง

แก้ไข 1 พ.ย. 2017:เห็นได้ชัดว่าบางคนบอกว่าไม่มี.soไฟล์ใน Windows คำตอบที่ฉันให้นั้นถูกดัดแปลงจากวิธีการตั้งค่าบน Mac ของฉัน (ซึ่งใช้.soไฟล์แทน.dll) อย่างไรก็ตามหลักการของคำตอบก็ยังคงถูกต้อง คุณกำลังใช้ไฟล์กำหนดค่าของ Apache httpd.confเพื่อระบุตำแหน่งที่โมดูล PHP ( .soหรือ.dll) ตั้งอยู่บนระบบของคุณ ดังนั้นความแตกต่างเพียงอย่างเดียวสำหรับ Windows ก็คือชื่อไฟล์และ / หรือตำแหน่งของเส้นทาง คำตอบที่ฉันได้รับนั้นถูกต้องสำหรับการติดตั้งวานิลลาของ Apache / PHP (โดยไม่มี XAMPP เลย)


3
ฉันตรวจสอบอีกครั้ง ฉันหามันไม่เจอ คุณช่วยตรวจสอบไฟล์ httpd.conf ของฉันได้ไหม นี่คือสำเนาของมัน freetexthost.com/sjxz4lh1i5โปรดแจ้งให้เราทราบหากคุณพบบรรทัดที่ฉันควรเปลี่ยน
ฉันเป็นคนที่โง่ที่สุด

2
ไม่มี libphp7.so ใด ๆ ลงใน XAMPP และสตริง LoadModule ใด ๆ ลงในไฟล์ conf
Federico Schiocchet

2
ฉันไม่พบรายการนี้ ฉันค้นหาไดเรกทอรี php ของฉันและไม่พบไฟล์. so เลย
Eoin

19
ใน v3.2.2 บรรทัดนั้นอยู่ใน xampp / apache / conf / extra / httpd-xampp.conf
Manuel

5
มันไม่ได้เป็นเพียงหนึ่งบรรทัด คุณต้องแก้ไขส่วนที่ดีของ httpd-xampp.conf ดังนั้นจึงเป็นการดีกว่าที่จะสลับ httpd-xampp.conf ทั้งหมดในแต่ละครั้งที่คุณต้องการ
Jeffz

34

คุณสามารถดาวน์โหลดและติดตั้ง xampp ที่แตกต่างกันสองแบบเช่นฉัน: (อันแรกคือ php7 วินาทีคือ php5) ป้อนคำอธิบายรูปภาพที่นี่

และหากคุณไม่ต้องการทำเช่นนั้นฉันขอแนะนำให้คุณใช้ wamp และเปลี่ยนเวอร์ชันตามที่แสดงในที่นี้


4
ทำไมคุณจะทำเช่นนี้? คุณกำลังติดตั้งซอฟต์แวร์เดียวกันจำนวนมากอีกครั้งเพียงเพื่อความแตกต่างเล็กน้อย (PHP เวอร์ชันต่าง ๆ เมื่อซอฟต์แวร์ส่วนที่เหลืออย่าง Apache และ MySQL เหมือนกัน) ฉันได้โพสต์โซลูชันที่คุณสามารถใช้ XAMPP เพียง 1 การติดตั้งแล้วชี้ไปที่ PHP เวอร์ชันที่เหมาะสม
แอนดี้

15
ทำไมคุณถึงทำเช่นนี้? เพราะมันใช้งานได้และฉันไม่รังเกียจที่จะติดตั้ง apache และ mysql หลายตัวหากมันช่วยประหยัดเวลา
Maulik Gangani

23
ไม่จำเป็นต้องใส่ใจเกี่ยวกับแนวปฏิบัติที่ดีที่สุดที่นี่เป็นสภาพแวดล้อมในท้องถิ่น
Ricardo Vigatti

2
ฉันใช้ aproach นี้ฉันขอแนะนำให้คุณเพิ่มรายการเมนูเริ่มเฉพาะสำหรับการติดตั้งแต่ละรายการเช่น: C: \ ProgramData \ Microsoft \ Windows \ Start เมนู \ Programs \ XAMPP56 และ C: \ ProgramData \ Microsoft \ Windows \ Start เมนู ตัวอย่างเช่น \ Programs \ XAMPP7
Ricardo Vigatti

2
หากนี่ไม่ใช่วิธีแก้ปัญหาที่ดีทำไมคุณไม่โพสต์โซลูชันที่ถูกต้อง? ที่จริงแล้วเป็นเรื่องยากมากที่จะติดตั้ง 2 เวอร์ชันใน xampp เดียวกันและวิธีแก้ปัญหาทั้งหมดที่นี่ผิด ...
Federico Schiocchet

12

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

นักเทียบท่าจะช่วยให้คุณเรียกใช้คอนเทนเนอร์หนึ่งกับ MySQL อีกด้วย PHP เนื่องจากเป็นภาพแยกคุณสามารถมีสองคอนเทนเนอร์หนึ่ง PHP 5 และ PHP 7 อีกหนึ่งคุณเริ่มต้นที่หนึ่งที่คุณต้องการและพอร์ต 80 สามารถแมปไปยังภาชนะทั้งสอง

https://hub.docker.comมีรูปภาพที่กำหนดไว้ล่วงหน้าหลากหลายรูปแบบซึ่งคุณสามารถติดตั้งและรันได้โดยไม่ต้องยุ่งยากอะไรมาก

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

นอกจากนี้ยังเป็นไปได้ที่จะเรียกใช้คอนเทนเนอร์ทั้งสองในเวลาเดียวกันและแมปพอร์ตแยกกัน ดังนั้นพอร์ต 80 สามารถแมปกับ PHP 5 และ 81 ถึง PHP 81 (หรือ PHP 7 ถ้าคุณดูในปี 2560)

มีแบบฝึกหัดมากมายเกี่ยวกับวิธีการติดตั้ง Docker ( https://docs.docker.com/engine/installation/ ) และโหลดประเภทอื่น ๆ ของ 'วิธีการ' ลองhttp://www.masterzendframework.com/docker-development-environment/สำหรับการกำหนดค่าสภาพแวดล้อมการพัฒนา


ฉันที่สองนี้ ทำ บริษัท ของคุณเป็นที่นิยมและให้นักเทียบท่าทำงาน สลับรุ่น PHP พัฒนาไปสู่นักพัฒนาใหม่เร็วขึ้นทำให้การปรับใช้ง่ายขึ้นและไม่น่าประหลาดใจในการผลิต
Kris Peeling

และ 81 ถึง PHP 81.คุณหมายถึง PHP 7 หรือไม่ ฉันคิดว่าเรายังคงใช้ PHP 81 อยู่บ้าง :)
แอนดี้

2
เอ่อ ... ฉันหมายถึง 81 (ฉันมั่นใจว่าคำตอบของฉันคือหลักฐานในอนาคต: - /)
ไนเจลเรน

1
@NigelRen ฉันไม่ได้ลงคะแนน แต่จะเดาว่าเป็นเพราะคุณกำลังเสนอให้ใช้โซลูชันที่แตกต่างไปจากเดิมอย่างสิ้นเชิง (Docker) แทนที่จะบอกว่าเป็นไปได้อย่างไรใน XAMPP - ซึ่งแน่นอน คำตอบของคุณคือทางเลือกที่ดีมากในการแก้ปัญหา แต่ไม่ใช่คำตอบสำหรับคำถามที่ถูกถาม
Andy

7

ฉันใช้ Uniserver

มันมีคุณสมบัตินี้ในตัว

http://www.uniformserver.com/

มันง่ายมาก

Uniform Server เป็นโซลูชันเซิร์ฟเวอร์ WAMP น้ำหนักเบาฟรีสำหรับ Windows การออกแบบแบบแยกส่วนน้อยกว่า 24MB รวมถึง Apache2, Perl5, PHP รุ่นล่าสุด (สลับระหว่าง PHP53, PHP54, PHP55 หรือ PHP56), MySQL5 หรือ MariaDB5, phpMyAdmin หรือ Adminer4 ไม่จำเป็นต้องติดตั้ง! ไม่มีฝุ่นรีจิสทรี! เพียงแค่แกะและลุกขึ้น!

มันวิ่งออกมาจากแฟลชไดรฟ์ มีการจำลอง cron, รองรับ Perl, mariaDB, Mysql รุ่นสอง, เซิร์ฟเวอร์ filezilla และสิ่งอื่น ๆ

ป้อนคำอธิบายรูปภาพที่นี่


นี่เป็นทางออกที่ดีที่สุดที่ฉันคิด ฉันช่วยชีวิตฉันไว้
skpaul

ฉันได้รับการแจ้งเตือนไวรัส Win32 / Uwamson.A! ml
Norman Huth

6

คุณสามารถมี XAMPP สองรุ่นที่แตกต่างกัน

  • ดาวน์โหลดไฟล์เหล่านั้นจากhttps://www.apachefriends.org/download.htmlและติดตั้งลงในไดเรกทอรีที่คุณเลือกตัวอย่างเช่นใน C: \ 5.6.31 \ xampp และ C: \ 7.1.18 \ xampp
  • หลังจากการติดตั้งทุกครั้งไปที่ไดเรกทอรีที่ติดตั้ง (เช่น C: \ 5.6.31 \ xampp, C: \ 7.1.18 \ xampp) และเริ่ม "setup_xampp.bat" แล้วคุณจะเห็นสิ่ง นี้
  • คุณสามารถสร้างทางลัดของ "xampp-control.exe" บนเดสก์ท็อปของคุณ (คลิกขวาที่ "xampp-control.exe" ส่งไปที่ -> เดสก์ท็อป) และเปลี่ยนชื่อทางลัดสำหรับอดีต "xampp 5.6.31" และ "xampp 7.1.8"
  • เริ่มแผงควบคุม XAMPP ด้วยดับเบิลคลิกที่ "xampp-control.exe" หรือทางลัดที่สร้างไว้ก่อนหน้าและเริ่มเซิร์ฟเวอร์ Apache และ MySQL
  • เพื่อทดสอบการติดตั้งเปิดเบราว์เซอร์ของคุณและพิมพ์ 127.0.0.1 หรือ localhost ในแถบตำแหน่ง คุณควรเห็นหน้าจอเริ่มต้นของ XAMPP
  • อย่าเปิดมากกว่าหนึ่งแผงควบคุม XAMPP
  • ถอนการติดตั้ง XAMPP หรือไม่ เพียงลบไดเรกทอรี "xampp" แต่ก่อนที่จะปิดกรุณาอาปาเช่และ MySQL
  • นั่นคือทั้งหมดที่ คุณสามารถใช้เวอร์ชัน php ที่แตกต่างกันเพื่อเปิดแผงควบคุม XAMPP ที่เกี่ยวข้อง

หากเป็นไปได้จริง ๆ ด้วยการติดตั้ง 1 สาเหตุที่คุณไม่โพสต์โซลูชัน ที่จริงแล้วเป็นเรื่องยากมากที่จะติดตั้ง 2 เวอร์ชั่นและโซลูชันทั้งหมดที่นี่ผิด ...
Federico Schiocchet

@Andy หาก DB มีขนาดไม่ใหญ่มากการติดตั้งสองครั้งเป็นตัวเลือกที่ทำงานได้ แต่คำตอบของคุณทำให้ฉันโหวตขึ้น
Jeffz

6

ฉันกำลังทำงานในโครงการสิบปีที่ทำงาน ดังนั้น 5.6 จึงเป็นค่าเริ่มต้นของฉัน นอกจากนี้ยังมีโครงการขนาดเล็กที่เก่ากว่าซึ่งใช้งานได้กับ 5.2 เท่านั้นและฉันต้องการทำงานกับเวอร์ชันใหม่สำหรับโครงการส่วนบุคคลของฉันด้วย 7.3.8

นี่คือสิ่งที่ฉันทำเพื่อเพิ่ม 5.2 และ 7.3.8 ในรุ่นเริ่มต้น 5.6

1 - ดาวน์โหลดเวอร์ชัน php TS ที่ดาวน์โหลด;

2 - แตกไปยังโฟลเดอร์ c: \ xampp \ php738 และ c: \ xampp \ php52 ตามลำดับ

3 - เพิ่มบรรทัดเหล่านี้ที่ด้านล่างของ httpd-xampp.conf (หรือ httpd.conf);

*** ข้อสังเกตที่สำคัญ: คุณไม่ควรใช้ชื่อนามแฝงสคริปต์เป็นชื่อโฟลเดอร์เป้าหมายของคุณพวกเขาจะต้องแตกต่างกัน (เช่น / php7x ก็โอเค / php7 ไม่ได้)

PHP 7.3.8 สำหรับโฟลเดอร์ D: \ www \ php7

ScriptAlias /php7x "C:/xampp/php738"
Action application/x-httpd-php7-cgi /php7x/php-cgi.exe
<Directory "C:/xampp/php738">
    AllowOverride None
    Options None
    Require all denied
    <Files "php-cgi.exe">
        Require all granted
    </Files>
</Directory>

<Directory "D:\www\php7">
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php7-cgi
    </FilesMatch>
</Directory>

PHP 5.2 สำหรับโฟลเดอร์ D: \ www \ php52

ScriptAlias /phpold "C:/xampp/php52"
Action application/x-httpd-phpold-cgi /phpold/php-cgi.exe
<Directory "C:/xampp/php52">
    AllowOverride None
    Options None
    Require all denied
    <Files "php-cgi.exe">
        Require all granted
    </Files>
</Directory>

<Directory "D:\www\php52">
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-phpold-cgi
    </FilesMatch>
</Directory>

หมายเหตุที่เป็นประโยชน์บางอย่าง:

  • หากคุณมีปัญหากับ php5.x ขณะที่ใช้เทอร์มินัลผู้แต่งเป็น 7.3.8
  • หากคุณต้องการสร้าง php 7.3.8 บรรทัดคำสั่งเป็นค่าเริ่มต้นตัวแปล php บน windows เพียงเปลี่ยนพา ธ สภาพแวดล้อมของ windows สำหรับ php เป็นพา ธ ของโฟลเดอร์ 7.3.8
  • อย่าลืมแก้ไข php.ini ที่เกี่ยวข้องของคุณตามที่คุณต้องการในแต่ละโฟลเดอร์

และเป็นบันทึกโบนัสสุดท้ายหากคุณต้องการตั้งค่าโฮสต์เสมือนด้วยเวอร์ชันใด ๆ คุณสามารถใช้วิธีการที่คล้ายกันได้ ตัวอย่าง laravel vhost conf สำหรับ php 7.3.8;

<VirtualHost *:80>
ServerAdmin admin@laravel.local
DocumentRoot "D:\www\vhosts\laravel.local\public"
ServerName  laravel.local
<FilesMatch "\.php$">
 SetHandler application/x-httpd-php7-cgi # escape for default php version
#SetHandler application/x-httpd-phpold-cgi # unescape for php 5.2
</FilesMatch>

ErrorLog "logs/laravel.local.log"
CustomLog "logs/laravel.local.log" combined

ขอบคุณ @Munim Munna สำหรับคำตอบอย่างละเอียดฉันต้องการแบ่งปันตัวอย่างที่มั่นคงกับประกาศสำคัญด้านบน


5

หากไม่จำเป็นต้องเป็น XAMPP อย่างแน่นอนและแน่นอนคุณสามารถลองใช้สิ่งที่คุณต้องการด้วย WAMP WAMP นั้นเหมือนกันในแพ็คเกจที่ต่างกัน

เมื่อคุณติดตั้งแล้วคุณสามารถสลับไปมาระหว่างเวอร์ชัน php ที่นี่:

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถติดตั้ง PHP ได้หลายเวอร์ชันตามที่คุณต้องการ

นี่คือวิธีการลงรายละเอียด

เพียงไปที่นี่: ดาวน์โหลด WAMP

จากนั้นเลือกเซิร์ฟเวอร์ฐานของคุณเช่นล่าสุดด้วย php7

จากนั้นเมื่อติดตั้ง WAMP 3 ไปที่โฟลเดอร์: addonsและเลือก php version (หรือเวอร์ชั่น) ที่คุณใช้งาน พวกเขามีรสชาติ php เริ่มต้นจาก php 5.3.29 ซึ่งควรทำงานกับ mysql_connect

ในการติดตั้ง addon ระหว่างการติดตั้ง (ดับเบิลคลิกไฟล์ exe) เพียงชี้ไปที่โฟลเดอร์ที่คุณติดตั้ง WAMP 3 ไว้

จากนั้นคุณสามารถใช้เนื้อหาของโฟลเดอร์อื่นเช่น: แอปพลิเคชันฯลฯ เพื่อเพิ่มฟังก์ชันการทำงานเพิ่มเติม

ทุกอย่างเชื่อมต่อกันดังนั้นคุณสามารถมีสมาธิในการเขียนโปรแกรมและไม่แฮ็คสภาพแวดล้อมของคุณ


4

ใช่คุณสามารถ. ฉันถือว่าคุณติดตั้ง xampp แล้ว ดังนั้น,

  • ปิดอินสแตนซ์ xampp ทั้งหมด การใช้ตัวจัดการงานหยุด apache และ mysqld
  • จากนั้นเปลี่ยนชื่อ xampp เป็น xampp1 หรืออะไรก็ตามหลังจากชื่อ xampp
  • ตอนนี้ดาวน์โหลดเวอร์ชั่น xampp อื่น ๆ สร้างชื่อโฟลเดอร์ xampp เท่านั้น ติดตั้ง xampp ที่ดาวน์โหลดมาที่นั่น
  • ตอนนี้ขึ้นอยู่กับความต้องการของคุณในเวอร์ชัน xampp เพียงเปลี่ยนชื่อโฟลเดอร์เป้าหมายเป็น xampp เท่านั้นและโฟลเดอร์อื่นเป็นชื่ออื่น

นั่นเป็นวิธีที่ฉันทำงานกับ xampp หลายตัวที่ติดตั้ง


4
ไม่แน่ใจว่าทำไมสิ่งนี้ถึงได้รับ downvotet เนื่องจากคำตอบนี้ใช้งานได้และเป็นสิ่งที่คำถามถาม การดาวน์สตรีมแบบเงียบโดยไม่แนะนำการปรับปรุงไม่ใช่สิ่งที่ฉลาดโดยทั่วไป
Fabian Schöner

@ FabianSchönerขอบคุณ ฉันไม่รู้ว่าทำไมฉันถึงได้ลงคะแนนในคำตอบนี้
Shuvro

1
เหตุผลที่ถูกลดระดับลงเนื่องจากมีใครบางคนโพสต์คำตอบนี้ไว้อย่างแน่นอน และประการที่สองมันเป็นวิธีที่ไม่จำเป็นอย่างสิ้นเชิงในการทำสิ่งต่าง ๆ ตั้งแต่คุณติดตั้งซอฟต์แวร์เดียวกันทั้งหมดอีกครั้งเพื่อให้ได้ความแตกต่างเล็กน้อย เป็นไปได้ - ตามที่ระบุไว้ในคำตอบที่ฉันโพสต์ - เพื่อใช้การติดตั้ง XAMPP 1 ครั้งจากนั้นกำหนดค่าให้ใช้ PHP เวอร์ชันต่าง ๆ
แอนดี้

3

เป็นไปได้ที่จะมีการตั้งค่า PHP หลายเวอร์ชันด้วยการติดตั้ง XAMPP ครั้งเดียว คำแนะนำด้านล่างนี้ใช้งานได้กับ Windows

  1. ติดตั้ง XAMPP รุ่นล่าสุดสำหรับ Windows (ในกรณีของฉันมันคือ PHP 7.1)
  2. ตรวจสอบให้แน่ใจว่า Apache ไม่ได้ทำงานจากแผงควบคุม XAMPP
  3. เปลี่ยนชื่อไดเรกทอรี PHP ใน XAMPP ติดตั้งไดเรกทอรีเช่นกลายเป็นC:\xampp\phpC:\xampp\php-7.1.11
  4. ดาวน์โหลดเวอร์ชั่นของ PHP ที่คุณต้องการใช้เพิ่มเติม (เช่น: PHP 5.4.45 )
  5. ย้ายไดเร็กทอรี php จากเวอร์ชันที่คุณดาวน์โหลดไปยังไดเร็กทอรีการติดตั้ง XAMPP เปลี่ยนชื่อมันจึงรวมถึงเวอร์ชัน PHP C:\xampp\php-5.4.45เช่น

ตอนนี้คุณต้องแก้ไขการกำหนดค่า XAMPP และ Apache:

  1. ในC:\xampp\apache\conf\httpd.confค้นหาการตั้งค่า XAMPP สำหรับ PHP คุณควรเปลี่ยนเป็นอย่างเช่น:

ที่ที่คุณต้องแสดงความคิดเห็น (กับ#) เวอร์ชัน PHP อื่น ๆ ดังนั้นIncludeจะมีการตีความเพียงครั้งเดียว

#XAMPP settings PHP 7
Include "conf/extra/httpd-xampp.conf.7.1"

#XAMPP settings PHP 5.4.45
#Include "conf/extra/httpd-xampp.conf.5.4.45"
  1. ตอนนี้ในC:\xampp\apache\conf\extraการเปลี่ยนชื่อไดเรกทอรีhttpd-xampp.confไปและเพิ่มแฟ้มการกำหนดค่าใหม่สำหรับhttpd-xampp.conf.7.1 httpd-xampp.conf.5.4.45ในกรณีของฉันฉันคัดลอกไฟล์ conf ของการติดตั้ง XAMPP อีกครั้งสำหรับ php 5.5 เนื่องจากไวยากรณ์อาจแตกต่างกันเล็กน้อยสำหรับแต่ละรุ่น

  2. แก้ไขhttpd-xampp.conf.5.4.45และhttpd-xampp.conf.7.1แทนที่การอ้างอิงทั้งหมดไปยังphpไดเรกทอรีด้วยphp-X.Xเวอร์ชันใหม่ มีการเปลี่ยนแปลงอย่างน้อย 10 รายการสำหรับแต่ละไฟล์

  3. ตอนนี้คุณต้องแก้ไข php.ini สำหรับทั้งสองเวอร์ชัน ตัวอย่างเช่นสำหรับ PHP 7.1 แก้ไขC:\xampp\php-7.1.11\php.iniที่คุณจะเปลี่ยนเส้นทางของไดเรกทอรี PHP สำหรับinclude_path, browscap, error_log, extension_dir..

และนั่นคือมัน ตอนนี้คุณสามารถเริ่ม Apache จากแผงควบคุม XAMPP และหากต้องการเปลี่ยนจากรุ่นหนึ่งเป็นรุ่นอื่นคุณเพียง แต่ต้องแก้ไขC:\xampp\apache\conf\httpd.confและเปลี่ยนแปลงรุ่น PHP ที่มีให้ก่อนที่จะรีสตาร์ท Apache


3

เรียกใช้สิ่งนี้ในหน้าต่างพรอมต์คำสั่ง (cmd.exe)

set PATH=C:\xampp\php;%PATH%

เปลี่ยนมันขึ้นอยู่กับที่คุณใส่การติดตั้ง php 7


2

คุณไม่จำเป็นต้องเสียเวลากับการกำหนดค่านี้เพียงแค่ใช้MAMP :)

MAMP มีฟีเจอร์เลือกเวอร์ชั่น PHP บนอินเตอร์เฟส


2

นี่อาจเป็นคำตอบทางเทคนิคน้อยที่สุดสำหรับคำถาม แต่ก็เป็นวิธีที่ง่ายที่สุดที่จะทำให้สำเร็จ

หากคุณมีสองไดรฟ์เช่นC:และD:คุณสามารถติดตั้ง XAMPP แยกต่างหากบนไดรฟ์ทั้งสองรุ่นที่มี php ที่แตกต่างกัน ฉันใช้เวลาน้อยกว่า 10 นาทีในการทำและมีข้อผิดพลาดน้อยที่สุด

ฉันเพิ่งสร้างทางลัดบนเดสก์ท็อปสองตัวสำหรับทั้ง xampp-control.exe และตั้งชื่อทางลัดหลังจากรุ่น php ฉันหวังว่านี่จะช่วยคนอย่างฉันที่ชอบวิธีแก้ปัญหาที่รวดเร็วและสกปรกมาก


1

ทำตามขั้นตอนง่ายๆ นี้ ฉันกำลังใช้งาน XAMPP บน PHP 7.2 แต่ต้องการ PHP 5.6 เพื่อทำงานในโครงการเก่า

ขั้นตอนที่ 1

ดาวน์โหลด Thread Safe เวอร์ชันของ PHP บนhttps://windows.php.net/download

วางไฟล์บน [ไดรฟ์]: \ xampp \ php5.6

  • เปลี่ยนชื่อโฟลเดอร์ตามรุ่น Php

ขั้นตอนที่ 2

คัดลอก [ไดรฟ์]: \ xampp \ apache \ conf \ extra \ httpd-xampp.conf

เปลี่ยนชื่อเป็น [Drive]: \ xampp \ apache \ conf \ extra \ httpd-xampp5.6.conf เปลี่ยนชื่อไฟล์ขึ้นอยู่กับเวอร์ชันของ Php

ขั้นตอนที่ 3

แก้ไข 'httpd-xampp5.6.conf ที่สร้างขึ้นใหม่'

โดยทั่วไปคุณต้องเปลี่ยนแหล่ง PHP และ. dll ทั้งหมด

ก่อน

LoadFile "C:/xampp/php/php7ts.dll"
LoadFile "C:/xampp/php/libpq.dll"
LoadModule php7_module "C:/xampp/php/php7apache2_4.dll"

หลังจาก

LoadFile "C:/xampp/php5.6/php5ts.dll"
LoadFile "C:/xampp/php5.6/libpq.dll"
LoadModule php5_module "C:/xampp/php5.6/php5apache2_4.dll"

นี่คือไฟล์ของฉัน: https://gist.github.com/mpalencia/f8a20c31bffb02fe20d371218c23d1ec

ขั้นตอนที่ 4

แก้ไขไฟล์ [ไดรฟ์]: \ xampp \ apache \ conf \ httpd.conf

ก่อน

# XAMPP settings
Include "conf/extra/httpd-xampp.conf"

หลังจาก

# XAMPP settings
Include "conf/extra/httpd-xampp5.6.conf"
  • คุณสามารถแก้ไขบรรทัดนี้เมื่อเปลี่ยนเป็นเวอร์ชันที่ต่างกัน

ขั้นตอนที่ 5

แก้ไขการกำหนดค่า PHP 5.6 ของคุณ - php.ini

เพิ่มไดเรกทอรีส่วนขยายของคุณ: extension_dir = "C: \ xampp \ php5.6 \ ext"

ขั้นตอนที่ 6

เริ่ม Apache

ขั้นตอนที่ 7

แก้ไขเส้นทางตัวแปรสภาพแวดล้อม PHP บน Windows


0

อาจจะช้าไปหน่อย แต่ฉันใช้แบตช์เพื่อเปลี่ยนชื่อโฟลเดอร์ PHP (เวอร์ชั่นphpswitch ที่แก้ไขเล็กน้อยที่ฉันพบเมื่อหลายปีก่อน)

คุณคัดลอกโฟลเดอร์ต่าง ๆ ลงในการติดตั้ง XAMPP ของคุณ แต่ละโฟลเดอร์ PHP (ยกเว้นที่ใช้งานอยู่) จะได้รับหมายเลขเวอร์ชันเป็นคำต่อท้าย (เช่น. php_5.6.32 ) ในโฟลเดอร์ PHP ทั้งหมดไฟล์ (PHP_VERSION) จะถูกสร้างขึ้นซึ่งมีเพียงหมายเลขรุ่นที่เกี่ยวข้องเท่านั้นดังนั้นสคริปต์สามารถดึงข้อมูลนี้ได้ แต่นั่นคือทั้งหมดที่อธิบายไว้ใน README

เนื่องจาก PHP7 httpd-xampp.confโหลดphp7ts.dllแทนที่จะเป็นphp5ts.dll php5ts.dllดังนั้นฉันต้องขยายสคริปต์ (PHPSwitch.php) เพื่อเปลี่ยนชื่อไฟล์ config เหล่านี้ด้วยโดยทำตามวิธีการเดียวกัน

    $renameCur = new PHPSwitch_Rename($currInst['path'], $this->_cfg['phpInstallationsPath'] . $this->_cfg['phpDirName'] . '_' . $currInst['version']);
    $renameNew = new PHPSwitch_Rename($newInst['path'], $this->_cfg['phpInstallationsPath'] . $this->_cfg['phpDirName']);

    $apache_curent      = $this->_cfg["phpInstallationsPath"]."apache/conf/extra/httpd-xampp.conf";
    $apache_curent_rename   = $this->_cfg["phpInstallationsPath"]."apache/conf/extra/httpd-xampp_".$currInst['version'].".conf";
    $apache_new             = $this->_cfg["phpInstallationsPath"]."apache/conf/extra/httpd-xampp_".$newInst['version'].".conf";
    $apache_new_rename      = $this->_cfg["phpInstallationsPath"]."apache/conf/extra/httpd-xampp.conf";

    $renameCur_apache_conf = new PHPSwitch_Rename($apache_curent, $apache_curent_rename);
    $renameNew_apache_conf = new PHPSwitch_Rename($apache_new, $apache_new_rename);

    $transaction = new PHPSwitch_Rename_Transaction();
    $transaction->add($renameCur);
    $transaction->add($renameNew);
    $transaction->add($renameCur_apache_conf);
    $transaction->add($renameNew_apache_conf);

0

ฉันจำเป็นต้องทำสิ่งเดียวกันดังนั้นฉันจึง googled ได้อย่างไรและมาสแต็คล้นซึ่ง OP มีปัญหาเดียวกัน ... ดังนั้นการค้นพบของฉัน .. ฉันพยายามเปลี่ยนชื่อไฟล์จากทุกทิศทางที่แตกต่างกันและข้อสรุปของฉันก็คือพาฉันไป นานเกินไป. SOOOO ฉันลงเอยด้วยการติดตั้งเวอร์ชั่น 7 จากที่นี่:

https://www.apachefriends.org/index.html (ฆ่าบริการและออกจาก xampp ก่อนที่จะพยายาม)

เมื่อถูกถามว่าจะใส่ชื่อไดเรกทอรีไว้ที่ใด (ให้ชื่ออื่น):

ป้อนคำอธิบายรูปภาพที่นี่

และ

DONEZO! ตอนนี้ให้แน่ใจว่าจะฆ่าบริการและออกก่อนที่จะสลับไปมาและคุณมี XAMPP 2 หมันที่จะเล่นค่ะ

ไชโย! ตอนนี้ฉันสามารถไปทำงานได้จริง!


ฉันคิดว่ามันถูกแนะนำโดย 2 คำตอบข้างต้น Maulik Gangani และ og1842
Munim Munna


0

ฉันรู้ว่านี่เป็นโพสต์เก่า แต่ฉันต้องการแบ่งปันมีห้องสมุดสำหรับยังคงทำงาน mysql_connect () ใน PHP 7 มันทำงานโดยการแทนที่ฟังก์ชั่นจริง (mysql_connect () ถูกแทนที่โดย mysqli_connect () ซึ่งทำงานในห้องสมุดนี้)

ฉันพบจากวิดีโอนี้https://www.youtube.com/watch?v=Eqd-jJu4sQ4

หวังว่ามันจะช่วย

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