Skip to content

Instantly share code, notes, and snippets.

@tranchausky
Last active January 1, 2024 13:12
Show Gist options
  • Save tranchausky/affd9a0d87f882b7b8c7522c727617f3 to your computer and use it in GitHub Desktop.
Save tranchausky/affd9a0d87f882b7b8c7522c727617f3 to your computer and use it in GitHub Desktop.
Running multiple PHP versions on XAMPP - Chạy nhiều phiên bản php trong XAMPP (Mặc đinh OS win)
Các bước để chạy XAMPP nhiều phiên bản
ví dụ
localhost:80 php 8
localhost.com8 php 8
localhost.com7 php 7
localhost.com5 php 5
-step 0----------------------
đã cài xampp trước nha
-1------------------------------
Tải phiên bản php muốn sử dụng
https://windows.php.net/downloads/releases/archives/
https://www.php.net/releases/
Ví dụ và yêu cầu file
php-5.5.9-Win32-VC11-x86.zip
đây là phiên bản 5.5.9 win 86 cần cài vc11 (tìm google vc11 download là ra)
php-7.4.9-Win32-vc15-x86.zip
đây là bản php 7.4 win 86 cần cài vc15 về trước khi chạy
php-7.4.9-Win32-vc15-x64.zip
đây là bản php 7.4 win 64 cần cài vc15 về trước khi chạy
để tích hợp được chạy nhiều phiên bản cần giản nén ra rồi chạy thử coi ok không, bằng cách
cmd chạy ở folder giải nén -> /php-7.4.9-Win32-vc15-x64/php.exe -v
(tới folder đó rồi chạy cmd php.exe -v)
nếu trả ra version thì ok còn không lỗi sẽ tìm cách mà fix trước khi tích hợp chạy nhiêu phiên bản
sau khi tải và test thành công thì cho folder đó vào thử mục của xampp
ví dụ
C:\xampp\php74
C:\xampp\php56
-2------------------------------
tải Download Fast CGI
Kiểm tra fast CGI đã cài chưa thường là chưa bằng cách view ra đọc thông số
Server API: (Apache 2.0 Handler)
Architecture: x64/x32
<?php
phpinfo();
Nếu là
Server API: (Apache 2.0 Handler) thì cần cài
Vào link
https://www.apachelounge.com/download/
tải đúng phiên bản win 64/32 về rồi
mod_fcgid-2.3.10-win64-VS16.zip
mod_fcgid-2.3.10-win32-VS16.zip
Trong file zip có file mod_fcgid.so
cho vào folder
C:\xampp\apache\modules
Rồi config nào
Mở file httpd-xampp.conf
C:\xampp\apache\conf\extra\httpd-xampp.conf
tìm đến đoạn (LoadModule php_module)
Mục đích là để chạy LoadModule fcgid_module modules/mod_fcgid.so thôi còn php vẫn đang giữ
ví dụ đang có
#
# PHP-Module setup
#
LoadFile "C:/xampp/php/php8ts.dll"
LoadFile "C:/xampp/php/libpq.dll"
LoadModule php_module "C:/xampp/php/php8apache2_4.dll"
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
Sẽ đổi thành
#
# PHP-Module setup
#
LoadFile "C:/xampp/php/php8ts.dll"
LoadFile "C:/xampp/php/libpq.dll"
LoadModule fcgid_module modules/mod_fcgid.so
<IfModule fcgid_module>
FcgidInitialEnv PATH "C:/xampp/php"
FcgidInitialEnv SystemRoot "C:/Windows"
FcgidInitialEnv SystemDrive "C:"
FcgidInitialEnv TEMP "C:/xampp/tmp"
FcgidInitialEnv TMP "C:/xampp/tmp"
FcgidInitialEnv windir "C:/windows"
FcgidIOTimeout 64
FcgidConnectTimeout 16
FcgidMaxRequestsPerProcess 1000
FcgidMaxProcesses 3
FcgidMaxRequestLen 8131072
# Location php.ini:
FcgidInitialEnv PHPRC "C:/xampp/php"
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000
<Files ~ "\.php$">
Options Indexes FollowSymLinks ExecCGI
AddHandler fcgid-script .php
FcgidWrapper "C:/xampp/php/php-cgi.exe" .php
</Files>
</IfModule>
Rồi sau đó lưu lại và chạy phponfo sẽ ra như dưới thì thành công bước này.
<?php
phpinfo();
?>
Server API:CGI/FastCGI
-3-------------
Tiếp đến khai báo để chạy thui cần config ở httpd-vhosts.conf
C:\xampp\apache\conf\extra\httpd-vhosts.conf
ví dụ chạy php php74, php5 tương tự
cổng khác, hay domain khác tương tự
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs"
ServerName localhost.com7
ServerAlias localhost.com7
<Directory "C:/xampp/htdocs/com7">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
<Files ~ "\.php$">
AddHandler fcgid-script .php
FcgidWrapper "C:/xampp/php74/php-cgi.exe" .php
Options +ExecCGI
</Files>
</Directory>
</VirtualHost>
Và tất nhiên file
C:\Windows\System32\drivers\etc\hosts
cũng cần thêm record cho domain local
127.0.0.1 localhost.com7
----THE END
Muốn thêm các port khác nhau thì
cần thêm Listen như 8080 rồi add port vào httpd-vhosts.conf là ok, không thì chạy chung cổng 80 với các domain, mà khác phiên bản php cũng được.
D:\XAMPP8\apache\conf\httpd.conf
...
Listen 80
Listen 8080
....
Nếu lỗi như
vcruntime140.dll was not found
Thì có nghĩa php bạn đang chạy cần vc11, vc15... visual cần tải về dúng với x64/x32 nữa là ok với php muốn
Nếu chạy 1 file a.php mà lỗi
No input file specified.
Thì có thể enable log ở cònig domain đó đi thì sẽ vào để mà xem log /dummy-host2.example.com-error.log
Rồi fix thui
hoặc vào php.ini rồi thêm cho nó ví dụ để fix lỗi php74 khi
open_basedir =C:/XAMPP/htdocs
ví dụ
<VirtualHost *:8080>
DocumentRoot "C:\XAMPP8\htdocs"
ServerName localhostzz.com
ServerAlias localhostzz.com
ErrorLog "logs/dummy-host2.example.com-error.log"
<Directory "C:\XAMPP\htdocs">
#Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
<Files ~ "\.php$">
AddHandler fcgid-script .php
FcgidWrapper "C:/xampp8/php74/php-cgi.exe" .php
Options +ExecCGI
</Files>
</Directory>
</VirtualHost>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment