Có thể có nhiều phiên bản PHP chạy trên cùng một hộp (như đường ray) hay không. Đây là vấn đề của tôi, tôi cần bắt đầu phát triển một dự án mới và đang lên kế hoạch sử dụng PHP 5.3 để nó có thể sử dụng khung công tác Zend mới nhất và bản ghi hoạt động với nó.
Tuy nhiên, máy tôi cần lưu trữ ứng dụng của mình có PHP 4.4 và có một số ứng dụng khác được lưu trữ ở đó. Tôi không muốn nâng cấp phiên bản PHP trên máy chủ như trong quá khứ tôi đã phải đối mặt với rất nhiều vấn đề trong khi nâng cấp phiên bản PHP và các chức năng không được chấp nhận.
Tôi đã tự hỏi nếu có thể có nhiều phiên bản PHP trên cùng một hộp và sau đó bằng cách nào đó chỉ định phiên bản mà bạn muốn ứng dụng của bạn tải (tương tự như đường ray)Nhiều phiên bản PHP trên cùng một hộp
Trả lời
Có, có thể. Trong thực tế, nhiều máy chủ hoạt động theo cách này. Bạn có thể thấy các phần mở rộng .php4 và .php5 theo thời gian cho biết phiên bản mà tập lệnh cụ thể sẽ được xử lý.
ServerFault giải quyết câu hỏi này
Một possiblity đang sử dụng một phiên bản của PHP như là một module Apache, và phiên bản khác như là một CGI; nhưng một ý tưởng tôi giống như tốt hơn là phải có:
- Một số trường hợp riêng biệt của Apache,
- Mỗi người nghe trên một cổng khác (ví dụ, PHP 4.4 trên cổng 44000, và PHP 5.3.1 trên cổng 53100)
- và mỗi người sử dụng một phiên bản khác của PHP
bằng cách này, bạn có môi trường hoàn toàn khác nhau, mà làm việc independantly của nhau, và bạn có thể cấu hình/thay đổi bất cứ điều gì bạn muốn mỗi năm môi trường mà không có rủi ro b reaking bất kỳ của những người khác.
(Và nếu bạn không muốn có số cổng trong URL của bạn, tôi nghĩ bạn có thể đặt một proxy trước trường hợp Apache biệt của bạn, vì vậy nó dường như chỉ có một)
Bạn có thể chạy nhiều phiên bản PHP trên cùng một hộp bằng Docker.
Một lệnh ví dụ sẽ là:
sudo docker run -d -p 8055:80 -v /var/www:/var/www \
-v /etc/apache2/sites-available:/etc/apache2/sites-available \
-v /etc/apache2/sites-enabled:/etc/apache2/sites-enabled \
codeyourdream/apache-sendmail-php55
Đây là những gì lệnh này không:
- Nó chuyển tiếp địa phương của bạn
/var/www
,/etc/apache2/sites-available
và/etc/apache2/sites-enabled
đến các thư mục tương ứng của Docker container. Nếu trang web địa phương của bạn và/hoặc cấu hình apache được đặt trong các thư mục khác nhau, hãy thay thế phần đầu tiên của giá trị-v
. I.e. định dạng là:docker run -v /host/directory:/container/directory -other -options image_name command_to_run
- Nó chuyển tiếp cổng 8055 của máy tính cục bộ của bạn đến cổng 80 của Docker chứa
- Nó chạy container từ "codeyourdream/apache-sendmail-php55" hình ảnh
Nếu bạn chạy lệnh này, tất cả các trang web địa phương của bạn sẽ có sẵn qua cổng 8055 (tức là qua các URL như http://localsite:8055) và được xử lý bằng PHP 5.5
Xem https://codeyourdream.com/blog/how-run-multiple-php-versions-apache-one-linux-machine-using-docker để biết thêm chi tiết. Ghi chú liên kết: đây là blog của nhóm của tôi.
Dường như đây là câu hỏi về lỗi máy chủ ... – Myles