IIS7 IIS8 中多個版本php共存的方法


原文地址:

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_*等,所以多版本共存還是比較有意義的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM