Hướng dẫn cài đặt nhiều phiên bản PHP trên XAMPP

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\php5.

Cấu hình php.ini

Copy file php.ini-development trong thư mục C:\xampp\php5 nói trên thành php.ini.

Tải bản 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. Các cấu hình này bao gồm các thay đổi về đường dẫn và các extension.

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 \xampp\apache\conf\extra\httpd-xampp.conf và comment dòng sau (thêm dấu # phía trước) nếu có. Đây là một cấu hình quan trọng, không có nó, php sẽ luôn load extension của phiên bản php mặc định của XAMPP

SetEnv PHPRC "\xampp\php"

Mở file httpd.conf , tìm đến dòng

# XAMPP settings
Include "conf/extra/httpd-xampp.conf"

Thêm tiếp sau đó 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-php5.conf.

# XAMPP settings
Include "conf/extra/httpd-xampp.conf"

# PHP 5.6
Include "conf/extra/httpd-xampp-php5.conf"

Tạo file httpd-xampp-php5.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-php5-cgi).

ScriptAlias /php56 "C:/xampp/php5"
Action application/x-httpd-php5-cgi /php5/php-cgi.exe
<Directory "C:/xampp/php5">
    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.29) 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 xampp\htdocs\php_5. Mở file php-xampp-php5.conf đã tạo ở trên để thêm vào đoạn sau.

<Directory "C:/xampp/htdocs/php_5">
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php5-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 php5.example.com
    DocumentRoot "C:/xampp/htdocs_5"
    <Directory "C:/xampp/htdocs_5">
        Require all granted
    </Directory>
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php5-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/php_5 hoặc nếu dùng VirtualHost là http://oldservice.example.com để xem kết quả.