Score:0

Apache2 : php 2 เวอร์ชั่นใน VHOST เดียวกัน

ธง in

ฉันกำลังย้ายแอปจาก PHP 5.6 เป็น php 8.0 โดยให้ตัวควบคุมด้านหน้าเปลี่ยนเส้นทางไปยังแอปเดิมหรือแอปใหม่ขึ้นอยู่กับ uri

ฉันลองใช้นามแฝงและใช้งานได้ แต่ฉันต้องเก็บโฮสต์เดียวกันไว้สำหรับทั้งคู่และไม่มีนามแฝง

เช่น: https://foo.bar.com/my_php80_routes https://foo.bar.com/my_php56_routes

นี่คือการลองใช้นามแฝงที่ไม่น่าพอใจของฉัน

<VirtualHost *:80>
    ServerName foo.bar.com

    DocumentRoot /var/www/html/foobar/public
    # Unwanted prefix
    Alias /legacy /var/www/html/foobar/legacy/web

    <Directory /var/www/html/foobar/public>
        AllowOverride none
        Require all granted

        SetEnv APP_ENV "dev"

        # Handled by php8.0 : ok
        <FilesMatch \.php$>
            SetHandler "proxy:unix:/var/run/php/php8.0-fpm.sock|fcgi://localhost/"
        </FilesMatch>

        FallbackResource /index.php
        DirectoryIndex index.php
    </Directory>

    <Directory /var/www/html/foobar/legacy/web>
        AllowOverride none
        Require all granted

        # Handled by libapache2-mod-php5.6 : ok
        FallbackResource /app_dev.php
        DirectoryIndex app_dev.php
    </Directory>

    ErrorLog /var/log/apache2/foobar.log
    CustomLog /var/log/apache2/foobar.log combined
</VirtualHost>

ฉันค้นหาวิธีอื่น อาจใช้ HTTP Header ที่กำหนดเอง เช่น "FOOBARAPP_LEGACY: 1" แต่ฉันไม่พบวิธีแมป HTTP HEADER กับตำแหน่งระบบไฟล์ด้วย Apache

มีวิธีอื่นอีกไหม ?

[แก้ไข]

ฉันจะพยายามอธิบายตัวเองให้ดีขึ้น

สิ่งที่ฉันพยายามบรรลุคือการมี 2 แอปพลิเคชันที่ทำงานบนเวอร์ชัน PHP ที่แตกต่างกัน แอปหนึ่งคือ "แอปหลัก" (แอปใหม่บน PHP8.0) และเปลี่ยนเส้นทางไปยัง "แอปที่สอง" หากไม่พบเส้นทางโดย "หลัก แอป". ทั้งหมดนี้โปร่งใสอย่างสมบูรณ์สำหรับผู้ใช้ปลายทาง (โดเมนเดียวกัน ไม่มีคำนำหน้า)

ถ้า https://foo.bar.com/posts ยังไม่ได้ย้าย : แอพหลักไม่พบเส้นทางและเปลี่ยนเส้นทางไปยังแอพที่สองที่จะให้บริการเนื้อหา

เมื่อปลายทางนี้ถูกย้ายไปยัง "แอปหลัก" : แอปหลักจะค้นหาเส้นทางและให้บริการเนื้อหา

ดังนั้นฉันจึงขอวิธีแก้ปัญหาที่ไม่เกี่ยวข้องกับ /prefix หรือโดเมนย่อยใหม่

Score:1
ธง it
RVT

คุณกำลังพยายามสร้างช่องทางให้กับ virtualhost เฉพาะผ่านไพพ์ที่ไปยังโมดูลพร็อกซีเพื่อเข้าถึงโฮสต์บนลูปแบ็ค ??? แต่ เท่านั้น สำหรับไฟล์ PHP? ฟังดูซับซ้อนโดยไม่จำเป็น

ทำไมไม่เรียกใช้โฮสต์เสมือนที่สอง บนพอร์ตรอง และใช้ mod_proxy เพื่อจัดการโฮสต์เสมือนทั้งหมด (กล่าวคือ โดยทั่วไป "วิธี" ในการอัปเกรด และยังคงมีอินเทอร์เน็ตอยู่)

หรือคุณรู้ไหมว่า คุณสามารถทำ virtualhost สำหรับแต่ละรายการได้อย่างแท้จริง เมื่อคุณย้ายข้อมูล จากนั้นปล่อยการเปลี่ยนเส้นทางอย่างง่ายระหว่างโฮสต์เสมือน เมื่อ URL "สำรอง" ปรากฏบนโฮสต์ "ผิด"

เมื่อคุณจัดการกับการย้ายข้อมูลประเภทนี้ ให้เลือก ง่ายที่สุด แบบ "อันนี้กับอันนั้น" แล้วกลิ้งไปทางนั้น

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

in flag
Atm ฉันลองใช้ php หลายเวอร์ชันในสภาพแวดล้อม dev debian ในเครื่องของฉันเท่านั้น (ไม่มีการจำลองเสมือน) และดูเหมือนว่าจะทำงานได้ดีแม้ในโฮสต์เสมือนเดียวกัน (modapache สำหรับ 5.6 และ fpm สำหรับ 7.4 และ 8.0) เนื่องจากฉันเป็นผู้พัฒนาและไม่ใช่ ops ฉันยังไม่เห็นว่าคำแนะนำของคุณจะทำงานกับโดเมนเดียวกันและคุกกี้ phpsessid ได้อย่างไร แต่ฉันจะพยายาม ขอบคุณ
RVT avatar
it flag
RVT
สิ่งที่ดีที่สุดสำหรับนักพัฒนาคือการใช้คอนเทนเนอร์ Docker หลายๆ อัน โดยมีเวอร์ชันและการกำหนดค่า PHP ที่แตกต่างกันระหว่างกัน การเรียกใช้มิดเดิลแวร์เดียวกันหลายเวอร์ชันบนโฮสต์ Apache เดียวกันเป็นเพียงการ "ถาม" ให้เกิดความสับสนในใจของฉัน (และนั่นไม่ใช่สิ่งที่คุณต้องการแทรกเข้าไปในขั้นตอนการผลิตโดยไม่ตั้งใจ) คุณอาจประสบความสำเร็จในสิ่งเดียวกันโดยใช้ VirtualBox และ Vagrant เพื่อยืนขึ้นและทำลาย VM ในเครื่องของคุณเอง แต่โดยรวมแล้ว ความรู้สึกของฉันคือในตอนแรกคุณควรพยายามแยกสิ่งเหล่านี้ออกจากกัน เพื่อหลีกเลี่ยงปัญหาที่อาจเกิดขึ้น

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา