Điểm:0

Apache2 : 2 phiên bản php trong cùng một VHOST

lá cờ in

Tôi đang di chuyển ứng dụng của mình từ PHP 5.6 sang php 8.0 bằng cách để bộ điều khiển phía trước chuyển hướng đến ứng dụng cũ hoặc ứng dụng mới của tôi tùy thuộc vào uri.

Tôi đã thử với bí danh và nó hoạt động nhưng tôi cần giữ chính xác cùng một máy chủ cho cả hai và không có bí danh.

Ví dụ: https://foo.bar.com/my_php80_routes https://foo.bar.com/my_php56_routes

Đây là lần thử không hài lòng của tôi với bí danh

<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>

Tôi đã tìm kiếm một phương pháp khác, có thể dựa trên Tiêu đề HTTP tùy chỉnh như "FOOBARAPP_LEGACY: 1" nhưng tôi không tìm thấy cách ánh xạ HTTP HEADER tới vị trí hệ thống tệp bằng Apache.

Còn có những giải pháp nào nữa ko ?

[chỉnh sửa]

Tôi sẽ cố gắng giải thích bản thân mình tốt hơn.

Những gì tôi đang cố gắng đạt được là có 2 ứng dụng, mỗi ứng dụng chạy trên một phiên bản PHP khác nhau, một ứng dụng là "Ứng dụng chính" (ứng dụng mới trên PHP8.0) và chuyển hướng đến "Ứng dụng thứ hai" nếu "Chính" không tìm thấy tuyến đường. Ứng dụng". Tất cả điều này hoàn toàn trong suốt đối với người dùng cuối. (cùng tên miền, không có tiền tố)

Nếu https://foo.bar.com/posts chưa được di chuyển : Ứng dụng chính không tìm thấy tuyến đường và chuyển hướng đến Ứng dụng thứ hai sẽ phục vụ nội dung.

Khi điểm cuối này được di chuyển sang "Ứng dụng chính": Ứng dụng chính tìm tuyến đường và phục vụ nội dung.

Vì vậy, tôi đang hỏi một giải pháp không liên quan đến tiền tố/tiền tố hoặc tên miền phụ mới.

Điểm:1
lá cờ it
RVT

Vì vậy, bạn đang cố gắng chuyển một máy chủ ảo cụ thể, thông qua một đường ống, đi đến một mô-đun proxy để truy cập máy chủ trên loopback??? Nhưng mà chỉ có cho các tệp PHP? Điều đó nghe có vẻ phức tạp không cần thiết.

Tại sao không chạy một máy chủ ảo thứ hai, trên một cổng phụ và sử dụng mod_proxy để xử lý toàn bộ máy chủ ảo. (tức là nói chung là "cách" để thực hiện nâng cấp và vẫn có kết nối Internet).

Hoặc, bạn biết đấy, bạn thực sự có thể tạo một máy chủ ảo cho mỗi máy chủ khi bạn di chuyển. Và sau đó thả vào các chuyển hướng đơn giản giữa các máy chủ ảo, khi URL "thay thế" xuất hiện trên máy chủ "sai".

Khi bạn đang xử lý loại di chuyển này, hãy chọn điều đơn giản nhất dạng "cái này so với cái kia" và lăn theo hướng đó.

Hoặc, nếu tôi hoàn toàn đã bỏ lỡ "hỏi" trong câu hỏi của bạn... bạn có thành công khi chạy nhiều phiên bản PHP trong cùng một phiên bản không? Xin hãy làm rõ, một cách thẳng thắn ... đó là không phải một cái gì đó tôi muốn giới thiệu bởi vì, bạn biết đấy... PHP. ;-)

lá cờ in
Atm Tôi chỉ thử nhiều phiên bản php trên môi trường dev debian cục bộ của mình (không ảo hóa) và có vẻ như nó đang chạy tốt ngay cả trong cùng một máy chủ ảo. (modapache cho 5.6 và fpm cho 7.4 và 8.0). Vì tôi là nhà phát triển chứ không phải ops nên tôi chưa thấy đề xuất của bạn sẽ hoạt động như thế nào với cùng tên miền và cookie phpsessid nhưng tôi sẽ thử, cảm ơn.
RVT avatar
lá cờ it
RVT
Thành thật mà nói, điều tốt nhất cho các nhà phát triển là sử dụng nhiều bộ chứa Docker, với các phiên bản và cấu hình PHP khác nhau giữa chúng. Theo tôi, việc chạy nhiều phiên bản của cùng một phần mềm trung gian trên cùng một máy chủ Apache chỉ là "yêu cầu" gây nhầm lẫn (và đó KHÔNG phải là thứ bạn muốn vô tình đưa vào một đường ống sản xuất, tất nhiên). Bạn có thể đạt được điều tương tự, sử dụng VirtualBox và Vagrant để hỗ trợ và phá bỏ máy ảo trên máy của chính bạn. Tuy nhiên, nhìn chung, cảm giác của tôi là ban đầu bạn nên cố gắng giữ chúng rời rạc, chỉ để tránh các vấn đề tiềm ẩn.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.