1. Vì sao phải chạy nhiều version PHP trên một server?
Trong thực tế triển khai, rất hiếm khi toàn bộ website trên server đều:
Cùng CMS
Cùng framework
Cùng yêu cầu phiên bản PHP
Các tình huống rất thường gặp:
Website cũ chưa nâng cấp được, cần PHP 8.0 / 8.1
Website mới yêu cầu PHP 8.2
Staging chạy PHP mới, production vẫn giữ phiên bản ổn định
Nâng cấp từng bước để giảm rủi ro
Vì vậy:
Chạy nhiều version PHP trên cùng server là nhu cầu thực tế, không phải ngoại lệ.
Vấn đề không nằm ở “có nên hay không”, mà nằm ở:
quản lý có kỷ luật hay để hệ thống tự rối.
2. Nguyên tắc quản lý nhiều version PHP trong production
Trong loạt bài này, việc quản lý nhiều PHP version tuân theo:
Mỗi version PHP chạy PHP-FPM riêng
Mỗi website chỉ dùng một version PHP
Kết nối bằng Unix socket riêng
Không đổi PHP version “toàn hệ thống” nếu không cần
Ghi chép rõ website ↔ PHP version
Nguyên tắc:
Tách biệt là chìa khóa để vận hành an toàn.
3. Cài đặt thêm version PHP (không làm ảnh hưởng version đang chạy)
Giả sử server đang chạy PHP 8.2, cần cài thêm PHP 8.1 cho website cũ.
3.1. Cài PHP-FPM 8.1
PHP 8.1 và 8.2:
Chạy song song
Không ghi đè lẫn nhau
Kiểm tra service:
4. Hiểu rõ socket của từng PHP version
Mỗi PHP-FPM version có socket riêng:
PHP 8.1:
PHP 8.2:
Kiểm tra nhanh:
Nguyên tắc:
Không dùng chung socket cho nhiều version PHP.
5. Gán version PHP cho từng website (bước quan trọng nhất)
5.1. Nguyên tắc gán PHP cho website
Không gán bằng CLI
Không gán bằng cách đổi php.ini toàn cục
Gán trực tiếp trong cấu hình Nginx của website
5.2. Ví dụ cấu hình Nginx cho từng website
Website A dùng PHP 8.2
Website B dùng PHP 8.1
Chỉ khác một dòng, nhưng quyết định toàn bộ runtime PHP.
6. Quản lý PHP CLI – tránh nhầm lẫn khi chạy lệnh
6.1. PHP CLI không quyết định website dùng PHP nào
Lệnh:
chỉ phản ánh:
PHP dùng cho CLI
Không phản ánh PHP-FPM đang chạy cho website
Nguyên tắc:
Website chạy theo PHP-FPM, không theo PHP CLI.
6.2. Gọi đúng PHP CLI khi cần
Khi có nhiều version PHP, nên dùng rõ ràng:
Tránh:
nếu không chắc CLI đang trỏ version nào.
7. Extension PHP cho từng version
Mỗi version PHP có extension riêng.
Ví dụ:
php8.1-mysqlphp8.2-mysql
Khi cài extension:
Phải cài đúng version
Không “cài một lần cho tất cả”
Ví dụ:
8. Kiểm tra website đang dùng PHP version nào
8.1. Cách an toàn để kiểm tra
Tạm thời tạo file PHP (sau đó xóa):
Truy cập website để xác nhận version.
8.2. Không dùng phpinfo() lâu dài
Chỉ dùng khi test
Xóa ngay sau khi xác nhận
9. Những sai lầm phổ biến khi quản lý nhiều PHP version
Đổi
phpCLI và nghĩ website đã đổi PHPDùng chung socket cho nhiều site
Cài extension sai version
Không ghi chú website dùng PHP nào
Upgrade PHP-FPM mà không kiểm tra Nginx
Những sai lầm này dẫn đến:
Lỗi khó hiểu, khó tái hiện, khó debug.
10. Checklist quản lý nhiều PHP version an toàn
Mỗi version PHP có FPM riêng
Mỗi website gán đúng socket
Không phụ thuộc PHP CLI
Extension cài đúng version
Có ghi chú website ↔ PHP version
11. Chiến lược nâng cấp PHP an toàn
Khuyến nghị:
Nâng cấp staging trước
Chạy song song version cũ và mới
Chuyển website từng bước
Giữ version cũ cho rollback
Nguyên tắc:
Không nâng cấp PHP theo kiểu “all-in-one”.
12. Bài tiếp theo
Trong Bài 29, chúng ta sẽ đi sâu vào hiệu năng PHP:
Tối ưu PHP-FPM: pool, process, memory
Bài này sẽ giúp:
PHP không nghẽn khi tải tăng
Tận dụng tài nguyên hợp lý
Tránh tuning cảm tính
- Đăng nhập để gửi ý kiến