原文地址:
https://blog.cozof.com/pieces/54.shtml
最近又重回.net,用回IIS。然后用到某個php開源項目,需要低版本的php,之前裝的一個php5.5不能用,所以決定降一下版本,后面發現其實可以多個版本共用。於是打算分享下。分享之前網上先搜了下,有發現有人實現了,但方法不同,所以還是分享下:
我的電腦是win7 64位
php可以在官網下載http://windows.php.net/download/,php 5.4之前的版本似乎沒有了,舊版本我是其它地方找的。
我們將使用fastcgi模塊,直接下載非線程安全(Non Thread Safe)的版本,效率比較高.x86是32位的,x64是64位的別下錯了,然后點zip下載。
下載解壓放到某個目錄,比如:
E:\php7.0.3\
E:\php5.5.30\
E:\php5.2.6\
php.ini的配置這里就不說了,原來該怎么設置怎么設置。
步驟
1.打開IIS 7。 IIS最上層>處理程序映射
2.右邊 添加模塊映射
3.在彈出的窗口中
路徑寫*.php 模塊選FastCgiModule,可執行文件是php目錄下的php-cgi.exe
名稱隨便填,為了好記可以填php版本名稱,然后確定。
再添加幾次 把多個版本的php都添加進去
4.由於是點IIS最上層添加,而不是點某個網站添加,所以每個網站目錄不會自動生成一個web.config文件。我們可以自己添加一個utf-8編碼的web.config文件放到網站目錄下,用於調用不同版本的php,不管有沒有多個版本的php,都需要這么一個web.config文件,內容如下:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers> <remove name="php5.5.30" /> <remove name="php7.0.3" /> <remove name="php5.2.6" /> <add name="php5.2.6" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="E:\php7.0.3\php-cgi.exe" resourceType="Unspecified" requireAccess="Script" /> </handlers> </system.webServer> </configuration>
主要就是scriptProcessor(腳本處理器)路徑不同,決定了調用了不同版本的php。
<remove name="php5.5.30" />也很重要,先把所有版本的php都移除一遍(這里的"name=" 就是之前填的名稱)。再add name=,確保調到的是需要的版本。
注意:如果這邊remove只有3個,而實際上你加了5個版本的php的話,為了確保調用到正確的版本,應該把另兩個加進去。
然后就可以了。有新站的話就把這個web.config拷到站點的目錄里,再修改下scriptProcessor的路徑就可以了。
我這幾個php共用的是一個MySql,版本是5.6.24,能正常使用。
由於php不同版本間是不怎么向后兼容的,比如php5.6以后不支持mysql_*函數連接mysql數據庫,只支持mysqli_*和pdo_*等,所以多版本共存還是比較有意義的。