IT Knowledge Base

~ Without sacrifice, there can be no victory ~

發佈日期:

如何在XAMPP中‧設定同時執行兩個不同版本的PHP程式

01. 自從PHP更新到7.0之後,有些之前於PHP 5.x執行的程式,特別是一些罐頭程式,己不能在新的PHP 7.0上執行。一直以為是沒有解決方法的,直到轉工期間多了時間,開始研究一下有沒有解決方法。02. 方法就是沿用XAMPP下載返來的PHP 7.3,加上之前的PHP5.6程式,再作一點設定就可以了。

03. 首先下載XAMPP舊的版本,今次用了的是5.6.40版本。

04. 解壓檔案,只需要PHP資料夾就可以了。

05. 將解壓後的PHP資料夾名稱改為其他名稱(例如:PHP56),將資料夾複製到XAMPP程式位置,即是C:\XAMPP\PHP56。

06. 打開C:\XAMPP\\PHP56\php.ini檔案。

將:
extension_dir = "\xampp\php\ext"
更改為:
extension_dir = "\xampp\\php56\ext"
將:
session.save_path = "\xampp\tmp"
更改為:
session.save_path = "c:/xampp/tmp"

06. 打開C:\xampp\apache\conf\extra\httpd-xampp.conf檔案。新增以下內容。

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>

07. 我會以另一個埠位(port)作為存取PHP 5.6的舊網頁程式的內容。所以在C:\xampp\apache\conf\\extra\httpd-xampp.conf檔案。再加入以下內容。

Listen 2080
<VirtualHost *:2080>
DocumentRoot "舊網頁內容位置"
<Directory "舊網頁內容位置">
Require all granted
</Directory>
<FilesMatch "\.php$">
SetHandler application/x-httpd-php56-cgi
</FilesMatch>
</VirtualHost>

08. 重新啟動Apache服務。

09. 在瀏覽器輸入網址『http://localhost:2080』。第一次我居然遇到『malformed header from script ‘php-cgi.exe’: Bad header: <br />』錯誤。網上有人題及是httpd-xampp.conf檔案設定問題。打開C:\xampp\apache\conf\extra\httpd-xampp.conf檔案。

將:
SetEnv PHPRC "\xampp\php"
更改為:
# SetEnv PHPRC "\xampp\php"

10. 再次重新啟動Apache服務。終於見到舊程式的登入畫面。

11. 但登入後又出現另一個『Fatal Error: Contact system adminstrator.』錯誤。這個是因為php.ini錯誤,打開C:\XAMPP\PHP56\php.ini檔案。

將:
short_open_tag = Off
更改為:
# short_open_tag = Off

12. 再次重新啟動Apache服務。終於見到舊程式的內容。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *