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组对于这个目录有读取和执行的权限。