Tôi có nhu cầu sử dụng nhiều phiên bản PHP trên XAMPP cùng lúc do có những dự án phải kết nối đến những dịch vụ dùng phiên bản PHP rất cũ.

Trước đây do không biết nên tôi đã phải cài thêm bản XAMPP cũ hơn ra một chỗ khác rất là dư thừa. Ngoài ra vì tôi sẽ phải khởi động một Apache Web Server mới nên sẽ cần thay đổi cổng HTTP/HTTPS, từ đó dẫn đến phức tạp trong triển khai.
Thật may vì cuối cùng tôi cũng tìm được câu trả lời hoàn hảo từ StackOverflow.
Giả sử tôi đang cài đặt phiên bản XAMPP mới nhất tại thời điểm viết bài là 8.0.12
chứa phiên bản PHP 8.0.12. Đường dẫn cài đặt tại C:\xampp
. Các bước cài đặt thêm bản PHP cũ hơn như sau:
Tải về PHP phiên bản cũ
Tải PHP phiên bản NTS (Non Thread Safe – là phiên bản chứa php-cgi.exe
) tại website php.net (chọn file ZIP có chứa -nts-
trong tên).
Ví dụ, muốn sử dụng PHP 5.6.40 thì tải về file
php-5.6.40-nts-win32-vc11-x64.zip
.
Giải nén file ZIP vào thư mục cài đặt XAMPP, ví dụ C:\xampp\php56
.
Cấu hình php.ini
Copy file php.ini-development
trong thư mục C:\xampp\php56
nói trên thành php.ini
rồi bỏ comment dòng sau:
extension_dir = "ext"
Ngoài ra, để tránh tình trạng không tương thích do các extension của PHP chưa được bật đầy đủ, hãy tải XAMPP có phiên bản PHP tương ứng tại SourceForge để tham khảo nội dung file php.ini
trong đó và merge những cấu hình cần thiết bằng WinMerge chẳng hạn.
Ví dụ với PHP 5.6.40 là phiên bản xampp-windows-x64-5.6.40-1-vc11.zip.
Cấu hình XAMPP Apache
Mở file httpd.conf
, tìm đến dòng
# XAMPP settings Include "conf/extra/httpd-xampp.conf"
Thêm tiếp vào dòng cấu hình sau đây để Apache load thêm một file config dành riêng cho phiên bản PHP tùy chỉnh của chúng ta, ví dụ đặt tại \xampp\apache\conf\extra\http-xampp-php56.conf
.
# PHP 5.6 Include "conf/extra/httpd-xampp-php56.conf"
Tạo file httpd-xampp-php56.conf
trong thư mục \xampp\apache\conf\extra
rồi thêm vào đoạn cấu hình sau. Mục đích là dùng mod_action
tạo giao diện CGI cho PHP 5.6 (ví dụ application/x-httpd-php56-cgi
).
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>
Với những phiên bản PHP khác ví dụ như 7.4 (bản cuối cùng là 7.4.25) ta cũng làm tương tự như vậy.
Cấu hình sử dụng phiên bản PHP tùy chỉnh
Ta có thể cấu hình những file PHP trong thư mục nào sử dụng PHP 5.6, ví dụ thư mục htdocs\old_service
. Mở file php-xampp-php56.conf
đã tạo ở trên để thêm vào đoạn sau.
<Directory "C:/xampp/htdocs/old_service"> <FilesMatch "\.php$"> SetHandler application/x-httpd-php56-cgi </FilesMatch> </Directory>
Hoặc ta có thể tạo thêm một VirtualHost tương ứng với một domain nào đó như sau:
<VirtualHost *:80> ServerName oldservice.example.com DocumentRoot "C:/xampp/htdocs/old_service" <Directory "C:/xampp/htdocs/old_service"> Require all granted </Directory> <FilesMatch "\.php$"> SetHandler application/x-httpd-php56-cgi </FilesMatch> </VirtualHost>
Cuối cùng ta khởi động lại Apache trên XAMPP rồi truy cập thử vào URL tương ứng ví dụ http://localhost/old_service hoặc nếu dùng VirtualHost là http://oldservice.example.com để xem kết quả.