iisphpfastcgi配置
⑴ php以fastCGI的方式運行時文件系統許可權問題及解決方法
在IIS7.0上以FastCGI方式配置好PHP運行環境,測試可以正常運行PHP程序後,將PHP程序部署上去,導入程序原來的數據和配置信息。很快就有問題出來啦下面我們就詳細記錄下。
今天准備將一個php
demo放在IIS下運行,網站在IIS下的配置是這樣的:
應用程序池是集成模式下的.net
framework
2.0(2.0或4.0沒什麼關系,因為php以fastCGI的方式在跑),
應用程序池標識配置為IIS內置的NETWORKSERVICE,
使用的認證方式為匿名身份驗證。
打開本地的網站,訪問php頁面,
出現了500錯誤。
好吧,是許可權問題,最簡單的解決辦法是把C:的許可權設成Everyone,
並允許完全控制:
重新訪問php頁面,成功了:
上面的方法是夠簡單,但也太不安全了,平時本地搭個demo這樣做沒問題,真正上線的時候,這樣做遲早出問題的。
於是重新設置,把該目錄下的只讀許可權賦給NETWRORKSERVICE帳號再試一下
不過問題還是沒有解決,訪問的時候,出現了401錯誤
錯誤信息中包括顯示登錄用戶為匿名,檢查了網站下的身份驗證(再點擊
匿名身份驗證->編輯),原來網站默認情況下,在登錄方法為匿名時,使用的默認登錄用戶為IUSR(就是我們看到的匿名登錄用戶了)
那麼解決辦法就是:
1.
將IUSR設置為C:的讀許可權,類似之前對NETWORKSERVICE的設置。
2.
或選擇使用應用程序池標識即可。
經試驗,方法1與2都成功。
Note:NETWORKSERVICE在IIS7中隸屬於iis_iusers用戶組,之前對NETWORKSERVICE的設置也可以改為對iis_iusers的設置,同樣也可以解決問題,只是許可權被進一步放寬了而已。
以上所述就是本文的全部內容了,希望大家能夠喜歡。
⑵ php5.3.2如何設置fastcgi
第一步:iis6.0環境配置,這里不多介紹
第二步:下載php5.3.2的windows壓縮版本:php-5.3.2-nts-Win32-VC9-x86.zip
1、下載地址:http://windows.php.net/download/,選擇VC9 x86 Non Thread Safe。有關PHP版本說明
2、把php-5.3.2-nts-Win32-VC9-x86.zip解壓縮到D:\PHP
3、修改PHP.ini
extension_dir = 「D:\php\ext」 指向php文件夾下放置「php_*.dll」文件的路徑
magic_quotes_gpc = On 如果是 Off,一定要打開為 On,這是防止sql攻擊的重要的一步!5.0版本已經默認 On 了
register_globals=Off 改為 register_globals=On ,使傳遞全局變數有效;
short_open_tag =Off,把off改成On ,此處一般能解決運行安裝Discuz!論壇時出現空白的問題
然後再查找以下字元串,把代碼前的分號去掉。
extension=php_mbstring.dll 這個不選的話用phpMyAdmin會出現紅色提示
extension=php_dba.dll
extension=php_dbase.dll
extension=php_filepro.dll可選
extension=php_gd2.dll支持GD庫的,一般要滴
extension=php_imap.dll 可選
extension=php_ldap.dll
extension=php_mysql.dll支持MySQL的
接下來修改了一些文件上傳以及內存使用最大限制:
memory_limit = 20M 內存容量
post_max_size = 20M 快閃記憶體容量
upload_max_filesize = 20M 附件容量
第三步:下載安裝 Microsoft FastCGI Extension for IIS 5.1 and 6.0
1、下載地址:
http://www.iis.net/download/fastcgi
http://download.microsoft.com/download/E/0/C/E0C0709A-66E5-4113-9A6C-A5F65BF6717D/fcgisetup_1.5_rtw_x86.msi
2、安裝fcgisetup_1.5_rtw_x86.msi
3、配置fcigext.ini (在%WINDIR%\system32\inetsrv 目錄里)
在fcigext.ini 末尾添加如下內容即可:
[Types]
php=PHP
[PHP]
ExePath=D:\php\php-cgi.exe (PHP目錄)
4、配置FastCGI 擴展與PHP 協同工作
右擊「網站」選擇「屬性」,
單擊「主目錄」選項,點擊「配置」按鈕,
單擊」添加「按鈕,
單擊」瀏覽「 在 %WINDIR%\system32\inetsrv 里尋找fcgiext.dll 。
在擴展名里輸入 .php ,
動作選擇」限制為「,輸入」GET,HEAD,POST「。
確認」腳本引擎「和」檢查文件是否存在「是否選擇,
如沒選中,請選中。
確認無誤後,單擊「確定」。
第四步:寫個簡單的腳步測試PHP FastCGI 是否正常工作了。
在C:\Inetpub\wwwroot 目錄創建test.php 文件,打開Test.php,填寫如下內容:<?php phpinfo(); ?>
保存Test.php,重啟IIS,然後在瀏覽器地址欄里輸入http://localhost/Test.php 看是否正確。
⑶ 如何優化windows+IIS67環境下FastCGI配置方法
windows2003+IIS6如何中優化FastCGI配置方法
FastCGI優化配置文件fcgiext.ini,它在%windir%\system32\inetsrv里。我們將嘗試用兩種辦法進行配置:FastCGI管理腳本fcgiconfig.js;記事本編輯fcgiext.ini。
腳本配置FastCGI
打開你的命令行cmd.exe,切換到目錄 %windir%\system32\inetsrv。復制下面內容,回車執行以下即可完成。請根據需要設置後面的參數。
1 cscript fcgiconfig.js -set -section:"PHP" -InstanceMaxRequests:5000
2
3 cscript fcgiconfig.js -set -section:"PHP" -EnvironmentVars:PHP_FCGI_MAX_REQUESTS:5000
4
5 cscript fcgiconfig.js -set -section:"PHP" -RequestTimeout:360
6
7 cscript fcgiconfig.js -set -section:"PHP" -ActivityTimeout:120
腳本的含義,分別是:
設置應用程序池回收。FastCGI進程請求數達到InstanceMaxRequests數值5000,應用程序池將自動回收。默認值是1000。
當環境變數PHP_FCGI_MAX_REQUESTS達到10000將自動回收應用程序池。
RequestTimeout 設置請求超時時間,也就是請求允許的最大時間,如果FastCGI進程請求超過此設置將被禁止,值是90秒。
ActivityTimeout 指定FastCGI進程請求的最大活躍時間,在設定時間內,FastCGI進程和IIS沒有通信,將終止進程。默認值是70秒。
注意:腳本命令是全局設置,針對伺服器上所有以FastCGI運行的PHP網站。因此對於多站點的虛擬機來說,InstanceMaxRequests設置成PHP網站數X500相對理想。
500是變數。如果有10個網站,那麼200X50=5000,類推。流量大的伺服器,數值設置過小頻繁回收應用程序池,並不是什麼明智的做法。——雖然,系統回收了不少資源。
RequestTimeout數值過大,無疑將讓更多消耗系統資源的請求運行;ActivityTimeout設置為120秒不活動就斷開好,還是30秒不活動就斷開好,因人而異。
復制粘貼適合懶人
FastCGI配置文件fcgiext.ini設置
InstanceMaxRequests=10000
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000
RequestTimeout=360
ActivityTimeout=120
把上面代碼復制到fcgiext.ini的末尾,保存就好了。
PHP5.3.6的優化配置
PHP5.3.6的php.ini配置也分為兩部分:關於FastCGI的配置;關於PHP本身的配置。我的PHP5.3.6安裝在C:\PHP。
PHP.ini關於FastCGI部分
fastcgi.impersonate = 1
cgi.fix_pathinfo=1
cgi.force_redirect = 0
PHP.ini關於自身的部分
一、搜索extension_dir,去掉前面注釋「;」,修改成:
1 extension_dir = "c:/php/ext"
二、搜索date.timezone,去掉前面注釋「;」,修改成:
1 date.timezone = "asia/shanghai"
三、搜索下面,然後去掉前面的注視「;」
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
如此這般你的PHP基本可以暢通無阻了。至於一些更高級的修改,我們沒有必要研究那麼深,不是嗎?
windows 2003+IIS6中優化fastcgi配置文件fcgiext.ini,減少php-cgi.exe進程數量和所佔內存大小
本來聽說fastcgi比isapi好就在伺服器中裝上了,配置環境為windows 2003+IIS6+fastcgi(FCGI)+PHP5.2.17,經過與很長一段時間觀察,發現工作在FastCGI模式下的PHP會佔用越來越多的內存,訪問量稍微多點php-cgi進程就多了N個,同樣情況下能比原來用isapi模式的時候多出幾百M,我的伺服器內存只有2G傷不起啊。
我在網上搜索了一下,發現還有不少人面臨同樣的問題。來自PHP官方的一個比較正式的解釋是:php-cgi進程並沒有內存泄漏,php-cgi會在每個請求結束的時候回收腳本使用的全部內存,但是並不會釋放給操作系統,而是繼續持有以應對下一次PHP請求。這樣做大概是為了減少內存碎片化或者解決從系統申請內存之後又釋放回操作系統所需要的時間不可控問題。可是如果偶然一次PHP請求使用了諸如ftp或者zlib這樣的大內存操作,那麼將導致一大塊系統內存被php-cgi持續佔有,不能被利用。
解決這個問題的辦法是在web伺服器配置中優化fastcgi配置文件參數。
在C:\WINDOWS\system32\inetsrv\fcgiext.ini 文件中可以設定php-cgi進程相關參數,如:
[Types]
php = PHP
[PHP]
ExePath=C:\php-5.3.8-nts-Win32-VC9-x86\php-cgi.exe
maxInstances=100
InstanceMaxRequests=10000
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000
RequestTimeout=600
ActivityTimeout=900
在上面的配置中:
ExePath 指定了FastCGI解析程序的路徑,
instanceMaxRequests 指定了每個實例可以處理的最大請求數,
maxInstances 指定可以啟動的最大實例數目,
EnvironmentVars 創建了一個環境變數 PHP_FCGI_MAX_REQUESTS ,默認值設為10000,
requestTimeout 指定了請求的超時時間為600秒,
activityTimeout 指定了活動會話超時時間為900秒。
一下是建議值:
maxInstances=
把這個值改小
建議
512M 內存的改maxInstances=50
1G 內存的改maxInstances=80
2G 內存的改maxInstances=140
再修改
InstanceMaxRequests=
把這個值改小
建議
512M 內存的改InstanceMaxRequests=200
1G 內存的改InstanceMaxRequests=300
2G 內存的改InstanceMaxRequests=500
改完, 重啟IIS。
instanceMaxRequests PHP_FCGI_MAX_REQUESTS 這兩個參數決定了一個php-cgi進程被創建出來之後,最多接受的PHP請求數,在lighttpd中默認配置是10000。也就是說這個php-cgi進程每接受10000次PHP請求後會終止,釋放所有內存,並重新被管理進程啟動。如果把它降低,比如改成100,那麼php-cgi重啟的周期會大大縮短,偶然的高內存操作造成的問題影響時間也會縮短。
maxInstances 這個參數指定可以啟動的最大實例數目,即php-cgi.exe進程的數目。如果把它降低,比如改成100,那麼在任務管理器的進程中最多隻有php-cgi.exe進程,php-cgi.exe所佔用的總內存將大大減少。
我現在用的伺服器為windows 2003操作系統,4G內存,一個php-cgi.exe程序佔用7-25M內存,我把maxInstances值調為300,減少了php-cgi.exe進程的總數量,佔用內存也減小了,反應速度比以前快了不少,至少調整到多少,可根據您的站點訪問量來決定。
⑷ IIS6配置PHP運行環境錯誤FastCGI Error 拒絕訪問
我已解決,不知道對你是否有用。 我的問題還是許可權問題,我只給了PHP文件夾的許可權,沒有對裡面的子文件夾,子文件修改許可權,所以導致出現這個問題。
⑸ win7系統 我在配置iis+php環境的時候在田間模塊映射的時候發現找不到FastCgiMole模塊。,怎麼解決。謝謝
原因:設置錯誤造成的。解決方法:嘗試添加新功能配置來解決此問題。
如下參考:
1.第一個右鍵點擊開始菜單,點擊管理工具,找到伺服器管理器點擊打開,如下圖。
⑹ 伺服器server2008 安裝IIS7,沒有出現 「FastCGI設置」 圖標
伺服器server2008 安裝IIS7,沒有出現 「FastCGI設置」 圖標,是設置錯誤造成的,解決方法如下:
1、首先右擊開始菜單,點擊管理工具,找到伺服器管理器點擊打開。
⑺ Win2008 IIS7,無緣無故的FastCGI(php-cgi)佔用過高如下圖,參數調整如下圖:
方法/步驟
1、首先安裝IIS 7,下載PHP Manager(請網路搜索下載,坑爹的不允許發鏈接),請根據自己的系統選擇32位或者64位下載。安裝步驟就不截圖了,一路按next就好了。安裝完後在IIS管理器裡面就能看到PHP Manager了。
2、下載php5.3以上版本。在選擇版本時有
3、Thread Safe和Non Thread Safe之分。Non Thread Safe就是非線程安全,Thread Safe 是線程安全。在windows+IIS平台選擇Non Thread Safe版本的PHP,並選擇V9以上的版本。本文以64位V11 Non Thread Safe 5.5.14版本為例:
4、解壓PHP 5.5壓縮包到某個文件夾中(本文以D:\PHPweb\PHP),打開IIS管理器,雙擊「PHP Manager」:
5、點擊「Register New PHP Version」,在彈出框裡面選擇PHP目錄下的php-cgi.exe文件,點擊確認後就能看到PHP的相關信息:
6、重啟IIS,PHP運行環境就配置成功了。出現「FastCGI進程意外退出」如何解決?在DOS下輸入命令「D:\PHPweb\PHP\php.exe -v」,根據提示做相應的修改即可。小編在運行命令後提示「缺失msvcp110.dll」,在36X衛士中「人工服務」直接修復了。
⑻ IIS7.0 以fastCgi 模式運行PHP 上傳文件大小限制 怎麼設置
打
系統盤找
C:\Windows\System32\inetsrv\config\schema目錄
該目錄
IIS_schema.xml
右擊打
文件
Ctrl+F
輸入"<attribute
name="maxAllowedContentLength"
type="uint"
defaultValue="30000000"
/>"
找
該配置節點
看
defaultValue=30000000
錯
限制
傳文件
修改
文件
讀屬性
要先
文件
讀屬性改掉
⑼ win7 IIS環境下怎麼搭建PHP環境具體怎樣配置
1)、採用理由:
優點:最大化的桌面圖形化操作系統,可維護性優秀。基於IIS v6.0/v7.0(2008),可以支持的腳本相當完整,不僅支持Linux無法支持的asp/asp.net,還可以安裝php、mysql、zend實現php環境。同時,利用Serv-U可以實現ftp管理。操作簡單,無需鍵入任何命令就可實現全能型主機。
缺點:由於正版Windows價格昂貴,Windows 2008中文版在20000-25000。如果加裝MSSQL,價格更要成倍增長
成功案例:微軟公司伺服器集群
(2)、操作步驟:
說明:環境Windows 7旗艦版sp1
採用IIS v7.0/v7.5+php+mysql構建操作環境。
1. 安裝IIS v7.0/v7.5
控制面板-程序和功能-打開或關閉Windows功能
新手可以把Internet信息服務下面的全選。
測試是否成功安裝IIS v7.0/v7.5,在瀏覽器輸入:http://localhost/或者http://127.0.0.1/
若瀏覽器里出現如上界面說明成功安裝IIS v7.0/v7.5
新建站點:(默認的站點用作asp/asp.net/,啟動8080埠,即訪問使用)
2. 配置PHP環境
採用最新的 php v5.4.3。下載php v5.4.3之後解壓到F:\WebLAMP\php5
在IIS中如下操作:
IIS 7及以上 支持php使用fastcgi模式。
配置IIS 7需要在IIS添加一個處理程序映射
添加處理程序映射:
添加模塊映射:
注意:要把php目錄下的pws-php5cgi.reg文件注冊運行下
添加默認文檔index.php:
修改F:\WebLAMP\php5\php.ini-development文件名為php.ini。
配置php.ini 文件,搜索如下配置並修改相應的配置值:使之支持mysql等extension_dir = ".\ext"
log_errors = On
error_log = "C:/inetpub/temp/php-errors.log"
fastcgi.impersonate = 1
fastcgi.logging = 0
cgi.fix_pathinfo=1
cgi.force_redirect = 0
session.save_path = "C:/inetpub/temp/phpsessions/"(可選)
去除以下擴展前的引號:
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_pdo_mysql.dll
extension=php_pdo_odbc.dll
extension=php_xmlrpc.dll
extension=php_xsl.dll
extension=php_zip.dll
輸入http://127.0.0.1:8080/或http://localhost:8080/校驗是否成功安裝php:
3. 添加Mysql資料庫:
採用mysql-5.5.25-win32.msi。
安裝Mysql:
設置Mysql:
校驗mysql是否正確安裝:
1. 檢測服務管理器中:mysql是否啟動:
2. 使用phpmyadmin能否接入mysql:
⑽ IIS下PHP的三種配置在區別和性能上的差異比較
在Windows IIS 6.0下配置PHP,通常有CGI、ISAPI和FastCGI三種配置方式,這三種模式都可以在IIS 6.0下成功運行,下面我就講一下這三種方式配置的區別和性能上的差異。
1、CGI(通用網關介面/Common Gateway Interface)一般是可執行程序,例如EXE文件,和WEB伺服器各自占據著不同的進程,而且一般一個CGI程序只能處理一個用戶請求。這樣,當用戶請求數量非常多時,會大量佔用系統的資源,如內存、CPU時間等,造成效能低下。
2、ISAPI(Internet Server Application Program Interface)是微軟提供的一套面向WEB服務的API介面,它能實現CGI提供的全部功能,並在此基礎上進行了擴展,如提供了過濾器應用程序介面。ISAPI應用大多數以DLL動態庫的形式使用,可以在被用戶請求後執行,,在處理完一個用戶請求後不會馬上消失,而是繼續駐留在內存中等待處理別的用戶輸入。此外,ISAPI的DLL應用程序和WEB伺服器處於同一個進程中,效率要顯著高於CGI。
在Windows Server 2003的IIS6下配置ISAPI方式的PHP,配置方法是,在IIS的「WEB服務擴展」中,添加一個新的WEB服務擴展,程序後綴為PHP,ISAPI程序為php5isapi.dll,然後再「環境變數」-「系統變數」中增加變數名PHPRC,數值為php.ini的路徑,在Internet信息服務管理器中,選擇網站或應用程序的根目錄,打開目錄屬性頁(右鍵選擇「屬性」),再選擇「主目錄」。點擊「配置」按鈕,選擇「映射」Tab頁。點擊「添加...」,在「可執行文件」設為: c:\php\php5isapi.dll,擴展名設為.php,選擇「確認文件是否存在」,然後「確定」保存設置。重啟伺服器即可完成PHP的配置。
3、FastCGI是可伸縮架構的CGI開放擴展,其主要行為是將CGI解釋器進程保持在內存中並因此獲得較高的性能。傳統的CGI解釋器的反復載入是CGI性能低下的主要原因,如果CGI解釋器保持在內存中並接受FastCGI進程管理器調度,則可以提供良好的性能、伸縮性等。
FastCGI已經集成於IIS7,也支持IIS6,在IIS6中的安裝方法可參見微軟的官方文檔,我這里簡單翻譯一下。
先點這里下載一個32位的FastCGI extension for IIS,然後將其安裝,安裝後的文件應該放到system32\inetsrv目錄下。
之後打開system32\inetsrv目錄,執行下面的語句,其中c:\php為你的PHP目錄,可以修改為其他數值。
cscript fcgiconfig.js -add -section:"PHP" -extension:php -path:"c:\php\php-cgi.exe"
在Internet信息服務管理器中,選擇網站或應用程序的根目錄,打開目錄屬性頁(右鍵選擇「屬性」),再選擇「主目錄」。點擊「配置」按鈕,選擇「映射」Tab頁。點擊「添加...」,在「可執行文件」設為: c:\windows\system32\inetsrv\fcgiext.dll,擴展名設為.php,選擇「確認文件是否存在」,然後「確定」保存設置。
修改php.ini文件,增加如下語句:
fastcgi.impersonate = 1
cgi.fix_pathinfo = 1
cgi.force_redirect = 0
之後打開system32\inetsrv目錄,執行以下語句:
cscript fcgiconfig.js -set -section:"PHP" -InstanceMaxRequests:10000
cscript fcgiconfig.js -set -section:"PHP" -EnvironmentVars:PHP_FCGI_MAX_REQUESTS:10000
最後,配置c:\php目錄的安全性,使得IIS_WPG組對於這個目錄有讀取和執行的許可權。