今天跟着學習了如何在IIS下部署php項目,操作很簡單,記錄一下步驟!
1.啟動iis服務器
最后點擊確定就完成了
2.打開iis
點擊進入即可
3.創建網站
進入添加網站。
添加注意事項如圖所示!
啟動、瀏覽、重啟、停止網站這個如圖所示。
需要說明的是 只要修改了配置就必須重啟下網站
4.php設置
①添加默認文檔
寫入 index.php就行
②處理程序映射
選擇“添加模塊映射”
說明
請求路徑:*.php * 知道正則就知道原因了
模塊:這個必須在啟動IIS的時候,必須勾選"CGI",不然選擇的時候找不到 FastCgiModule
到此為止 php項目已經是在iis上部署好了【在項目根目錄下會生成web.config文件】。但是對於那些需要使用偽靜態的 比如 yii2 美化url路由 ....的話,還需要以下的操作:
1.安裝urlrewrite
百度URLREWRITE 下載並安裝。
2.使用URL重寫
安裝成功URLREWRITE后,關閉iis后再次啟動。接着在頁面就會出現url重寫項。點擊它即可
url重寫做好之后,會吧配置都寫在 web.config 文件里
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <defaultDocument> <files> <add value="index.php" /> </files> </defaultDocument> <handlers> <add name="php" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="E:\phpstudy\php\php-7.0.12-nts\php-cgi.exe" resourceType="File" /> </handlers> <rewrite> <rules> <rule name="wechat"> <match url="^\/wechat\/(.*)$" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" /> </conditions> <action type="Rewrite" url="/wechat/index.php/{R:1}" /> </rule> <rule name="已導入的規則 1"> <match url="^(.*)$" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" /> </conditions> <action type="Rewrite" url="index.php/{R:1}" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
大家注意了 。我上面的配置有兩個重點。
第一 解決了 “關於IIS上Yii2的url路由美化問題”
第二 解決了 “在IIS環境下,yii2web項目如果web目錄下有多個應用的話,如何url路由美化的問題”。經過測試,如果我只配置(這個規則是導入web目錄下的.htaaccess文件):
<rule name="已導入的規則 1"> <match url="^(.*)$" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" /> </conditions> <action type="Rewrite" url="index.php/{R:1}" /> </rule>
但是問題來了,我web下還有一個wechat目錄,用於微網站的使用。在我的測試中,發現我們項目上使用的已經美化的url路徑直接報錯“404”,后面經過我們的調整,然后就把配置改成:
<rewrite> <rules> <rule name="wechat"> <match url="^\/wechat\/(.*)$" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" /> </conditions> <action type="Rewrite" url="/wechat/index.php/{R:1}" /> </rule> <rule name="已導入的規則 1"> <match url="^(.*)$" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" /> </conditions> <action type="Rewrite" url="index.php/{R:1}" /> </rule> </rules> </rewrite>
如果把這兩個規則換個位置的話,結果會發現微網站的美化地址又是404
我這里解釋下原因:規則應該是從上往下配置,選擇最優配置。
最后總結下:本文說明如何在IIS環境下配置php項目以及在iis優化yii2的url路由問題
/********************************************************2019年-06-02**********************************************************************************************************************************************************************/
哇,已經有兩萬的閱讀了,看來iis還是很厲害的了。今天幫朋友處理window iis 管理php網站,又記住了幾個常用的配置。於是乎,就上來更新下博客,便於后期操作。
1.文章上面的“處理程序映射”都是針對某個網站的配置的,其實更通用的方式是在
配置。同時我們可以配置多個php版本。
2.程序映射還可以使用腳本映射,對於腳本映射需要下載 php版本對應的isapi擴展,例如:php5isapi.dll,但是這個操作我個人不推薦使用,好像只有早期的版本可以支持。我在這里說明,是因為有可能會遇到有些老項目人家部署php時,是這么干的,就像今天我幫朋友處理一樣,那上面有個項目就是這樣干的
3.處理程序映射的時候,有個請求限制,可以將設置改為文件和文件夾
4.還可以下載phpmanager,用於管理php的配置
/********************************************************2019年-06-11*********************************************************************************************************************************************************************/
今天更新一下phpManager的使用說明,
問題:當安裝一個php版本之后,我們試着添加一份php.ini[修改php.ini.production or php.ini.development],然后重啟iis,然后運行項目【譬如:phpmyadmin】,這時你會發現,缺少擴展,可是你配置文件已經開啟了擴展,那么問題出在哪呢?
解答:
1、其實windows 默認安裝的話, Loaded Configuration File 即讀取php.ini配置文件的路徑。使用IIS,那就是一定要把 PHP.INI 放在 Windows 的系統路徑下 (C:/WINDOWS 或 C:/WINNT) 。所以你修改你php所在目錄下的配置文件是沒有起到作用的,必須將文件復制到對應目錄下 (參考:https://blog.csdn.net/letian003/article/details/5995856)。
2、那么這個時候phpManager就派上用場了,我們可以在https://www.iis.net/downloads/community/2010/09/php-manager-for-iis-7 官網去下載對應iis版本的phpManager
3、下載完成,重啟iis會發現phpManager在里面了,雙擊PHP Manager后,點擊“Register new PHP Version”,然后選擇好php目錄中的php-cgi.exe,然后php.ini就會為適合IIS7.5的配置默認給你生成好了