一、基础知识

我们知道php配置有几种:

1、CGI方式加载PHP环境,通常就是IIS里面配置解释器为 php.exe,早期比较常见,目前使用较少。 
特点是:稳定,但效率太低。

2、ISAPI方式加载PHP环境,通常就是IIS里面配置解释器为php5isapi.dll,目前使用最多,应用最广。 
特点是:多线程,效率较高,但不够稳定。

3、FastCGI方式加载PHP环境,在IIS环境里并不常见,但其它系统环境应用还是有的,不过IIS7.0开始内置FastCGI了。 
特点是:高效率,高稳定性,属于将来发展趋势。

我试过其他的特别麻烦,PHP 5.3发布的Windows版已经不支持ISAPI模式了,所以我打算按微软推荐的FastCGI方式运行PHP。

我用的就第三种,也是最好最快的,因为FastCGI大大加强了IIS处理PHP的能力,能迅速提高PHP站点的反应速度和生产力,

并具有更高的稳定性和安全性.

下载地址:http://windows.php.net/download/里面有好多种,要那种呢?

PHP现在推出5.3.2版本了,不过下载的时候有几个不同版本选择。那就是VC6 X86和VC9 X86。 
首先我来解答: 
VC6是什么? 
    VC6就是legacy Visual Studio 6 compiler,就是使用这个编译器编译的。 
VC9是什么? 
    VC9就是the Visual Studio 2008 compiler,就是用微软的VS编辑器编译的。

那我们如何选择下载哪个版本的PHP呢? 
如果你是在windows下使用Apache+PHP的,请选择VC6版本; 
如果你是在windows下使用IIS+PHP的,请选择VC9版本;

那Non Thread Safe是什么? 
    Non Thread Safe就是非线程安全; 
Thread Safe 是什么? 
    Non Thread Safe 是线程安全;

FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以 FastCGI(无论搭配 IIS 6 或 IIS 7)执行 PHP ,都建议下载、执行 non-thread safe 的 PHP (PHP 的二進位檔有兩種包裝方式:msi 、zip ,請下載 zip 套件)所以我们选择NO-Thread Safe 版本的PHP来使用
而线程安全检查正是为ISAPI方式的PHP准备的,因为有许多php模块都不是线程安全的,所以需要使用Thread Safe的PHP。

二、安装 IIS 7.5

打开【服务器管理器】-【角色】-【添加角色】, 选择【Web服务器(IIS)】

选择角色服务,注意一定勾选【CGI】,如果你的程序在IIS7下出错,记得选择服务的时候添加IIS6兼容模块,如果无问题,这个可以不用选择;

测试是否成功安装IIS v7.0/v7.5,在浏览器输入:http://localhost/  或者 http://127.0.0.1/

二、安装 PHP

zip 格式,php 安装。

直接解压在 C:\php 目录即可。

PHP配置

3. 配置PHP
①把下载好的ZIP文件解压到一个文件夹,比如C:\PHP,下文称之为PHP目录。
②把PHP目录下的php.ini-development改名为php.ini,并打开它。
③打开扩展目录配置extension_dir,即把 extension_dir = "ext"前的分去掉。
④打开扩展配置,我觉得php_mbstring是必须的,其它的可以自选。
⑤修改时区。date.timezone = "Asia/Shanghai"
⑥修改mbstring配置,这个根据自己的情况改,如果只是测试用的话,不改也没关系。
⑦修改好后可以运行CMD,进入PHP目录,执行php –version,如果配置不对的话,就会有警告。

修改F:\WebLAMP\php5\php.ini-development文件名为php.ini。

配置php.ini 文件,搜索如下配置并修改相应的配置值:使之支持mysql等extension_dir = "php安装目录\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/"(可选)

以上3个前的;去掉,并修改以上相应数值,如下图所示:

去除以下扩展前的引号:

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/或http://localhost/校验是否成功安装php:

如果按上面的教程配置好后,运行php测试页面,出现了500错误。

那就设置php.ini中的date.timezone项。

我这里设置成上海时区:date.timezone = Asia/beijing

三、整合 IIS 与 PHP

IIS 7 , 7.5 默认支持 FastCGI 方式运行 php

 配置IIS和PHP的转接
①“控制面板”里点击“系统和安全”,在新的画面里点击右边下部的“管理工具”,在新窗口里点击“Internet信息服务(IIS)管理器”。
②在新打开的“Internet信息服务(IIS)管理器”中,双击“处理程序映射”,在新出现的画面的右上角点击“添加模块映射”。
③在添加模块映射画面,内容如下。请求路役:*.php;模块:FastCgiModule;可执行文件:选择PHP目录的php-cgi.exe,如C:\PHP\php-cgi.exe;名称:PHP(这个可以自己随便)。请求限制可加可不加,加的话,一般把谓词设为GET,HEAD,POST。
④确定,然后可以自己写一个PHP测试文件测试一下。代码<?PHP phpinfo(); ?>

第一步:配置IIS 7 ,打开 Internet信息服务器(IIS)管理器, 在 IIS 添加一个处理程序映射

第二步:添加 【模块映射】

请求路径:*.php
模块:FastCgiModule
可执行文件:php安装目录\php-cgi.exe

名称:PHP via FastCGI

注意:要把php目录下的pws-php5cgi.reg文件注册运行下

第三步:配置 FastCGI

注意,这里如果是IIS7,则需要手动安装Administration Pack for IIS 7.0 ,如果是IIS7.5,则无需下载,IIS7.5已经集成此功能。

添加:PHP_FCGI_MAX_REQUESTS , value 数值10000;

第四步: 配置默认文档

添加默认文档index.php:

IIS 日志:  

http://www.cnblogs.com/fish-li/p/3139366.html

四、测试 IIS 与 PHP

ok!完毕!

测试下:

新建一个.php文件,里面

<?php

phpinfo();

?>

保存!

运行,出现下面页面,说明配置成功了!

这样的方法 IIS就不用怎么配置,他都会自动配置好了!微软提供的配置更加详细 !

如果按上面的教程配置好后,运行php测试页面,出现了500错误。

那就设置php.ini中的date.timezone项。

我这里设置成上海时区:date.timezone = Asia/beijing

设置完后就一切正常了!

windows 2008 R2:

原来出现这个错误是因为PHP5.3是Visual C++ 2008 compiler (VC9)编译的,所以需要在服务器上安装Visual C++ 2008 runtime,至此,整个问题解决。

核实 php.ini 中的这几项cgi.force_redirect=0fastcgi.impersonate=1fastcgi.logging=0

五、配置 KODExplorer

web explorer: http://www.freehao123.com/web-ftp/

什么是 KODExplorer:   http://kalcaddle.com/index.html

KodExplorer是一款开源的基于Web的在线文件管理、代码编辑器。它提供了类windows经典用户界面,一整套在线文件管理、文件预览、编辑、上传下载、在线解压缩、音乐播放功能。让你直接在浏览器端实现web开发、源码文件预览、网站部署。同时拥有与本地操作一样方便、快捷、安全的体验。 商业版授权请联系:kalcaddle#qq.com

下载KODExplorer: http://kalcaddle.com/download.html

1.下载,解压

下载KODExplorer, 然后解压到 D:\ 根目录, 比如:D:\kodexplorer3.12。

2.在 IIS 中发布

【开始】-【管理工具】-【Internet 信息服务(IIS)管理器】 - 【右键  网站】 -【添加网站】

通过web 浏览器访问: http://localhost/

必须修改 文件系统相关的权限,才可以继续。

3.使用说明

管理员:  admin/admin
普通用户:demo/demo
游客用户:guest/guest[如何使用] 下载程序,解压上传到你的服务器路径下,data目录设置777权限。访问体验超便捷的服务吧!
(为确保数据安全,最好配置服务器不允许列目录)[关于上传问题] 程序没有做任何限制,如果需要上传大文件,则修改php.ini:`upload_max_filesize = 1000M post_max_size = 1000M`  [详情:http://955.cc/R2yT]注意不能大于2g,否则可能导致php无法正常运行(不支持post)。[关于解压缩问题] 程序不做任何限制,如若失败请设置php内存限制。memory_limit  1000M
[关于解压缩乱码] linux服务器压缩,下载到windows下中文会乱码。是由于系统导致的。所以尽量不要跨系统操作。
[关于"系统错误"] 请配置php错误提示级别error_reporting; 配置php.ini或者允许error_reporting函数
[关于兼容性] 建议使用chrome firefox ie9+  体验更完整。ie8以下基本上不做兼容处理。chrome支持文件夹拖拽上传。
[文件打开] office文件在线预览功能,服务器必须在公网(外部能访问该服务器);内部或局域网需要使用请参考qq群共享“web office搭建”,然后配置kod程序config/config.php OFFICE_SERVER[安全提示] 为确保数据安全,请设置http服务器不允许列目录。[详情:http://955.cc/R2vw]
[忘记密码] 修改data/system/member.php 密码为明文的md5值 例如将admin密码重设为admin则修改第一行:"name":"admin","password":"21232f297a57a5a743894a0e4a801fc3"【文件拖拽上传】除了ie8以下的大部分浏览器支持;建议使用chrome、360、猎豹、uc等
【文件夹拖拽上传】除了ie10以下、firefox大部分浏览器都支持,建议使用chrome、360、猎豹、uc等

权限控制相关

KodExplorer 是根据用户身份进行权限访问控制,而不是根据 windows 或 linux smb 共享一样, 基于文件系统权限进行控制。虽然有关系,但是着重点是不同的。

对于每一个用户,其都有私人文件夹,以及公共文件夹。

对于 【公共目录】, 是所有用户可见,都可以访问的。

对于【我的文件】,是用户自己完全控制的,但是具体的权限, 管理员admin可以进行设置。 删除用户必须要谨慎,因为删除用户会把此用户的home目录全部干掉,造成无法挽回的局面。

管理员可以进行很多设定:

主菜单设定:

用户的权限,是根据其所属的用户组而确定的。我们可以针对用户组设定如下细致的权限控制。

关于权限多说几句, 我们可以只依赖于 kodexplorer的权限管理, 我们把底层的 文件系统权限放到最大(linux 777, windows  Everyone 完全控制)

【文件(夹)属性】: 查看文件夹属性,以及修改权限。

【zip压缩、zip解压】: 对于文件夹,和压缩文件,右键菜单是否有【压缩】、【解压缩选项】选项,可以进行压缩操作。

【远程下载】:输入下载地址,直接下载。

【文件下载】: 可以进行下载, 和在线编辑操作。

【配置数据】: 能否进行 主题切换、更换壁纸、播放器设置等等。

需要更细致的文件权限管理, 要结合底层文件系统权限进行设置。

kodexplorer 默认的配置文件:  kodexplorer/config 文件夹中。

IIS7权限简述

IIS7对于以往是革命性的改变, 不再是以前缝缝补补的破衣裳, 全部重写的代码带来了更为优秀的性能与扩展能力. 他不再是一个Web Server了而变成了一个Application Server能够承载一切以通讯为基础的应用. 新的变革也带来了新的知识, 想更好的驾驭IIS7权限则是最基础的一部分也是最先需要了解的一部分. 本文让你初步了解IIS7的权限应用的基本相关知识, 了解来龙去脉不会再因应用程序突然多出一个莫名其妙权限而感到困惑. 虽然下面的内容均以Web服务为例, 但道理同样适用于以IIS7宿主的其他应用如FTP等等.

工作进程(Worker Process)

Worker Process是IIS应用程序的宿主, 在任务管理器中可以看到每一个Worker Process就是一个w3wp.exe.

工作进程标识(Worker Process Identity - WPI)

是Worker Process运行时的身份:

  • 在IIS6, Windows 2008 IIS7下, 默认关联权限是NetworkService.

  • 在Windows 2008 R2 IIS7.5下, 默认是关联权限是Application Pool Identity.

这里并没有提供一个直接的手段来设置Worker Process在什么身份标识下运行, 而是通过Application Pool的身份标识设定来实现的.

应用程序池(Application Pool)

Application Pool包含至少一个或多个Worker Process(Web Garden模式). 在运行时会将Application Pool的身份注入到Worker Process中, 就会以Application Pool的身份运行. 可以认为Application Pool与其包含的Worker Process的运行身份是一致的.

应用程序池标识(Application Pool Identity)

是Application Pool运行时的身份:

  • 在IIS6, Windows 2008 IIS7下, 默认关联权限是NetworkService.

  • 在Windows 2008 SP2 IIS7下, 运行身份设置时除了LocalService, NetworkService, LocalSystem外增加了Application Pool Identity一个选项, 而这个则是一个可以设置权限的虚拟标识.

  • 在Windows 2008 R2 IIS7.5下, 默认是关联权限是 Application Pool Identity.

虚拟帐户 Application Pool Identity

上面提到的身份标识选项中你可以选择他, 但他只是一个统称, 并不存在实际的这个命名. 他依赖你的Application Pool的名称, 例如我的Application Pool名字叫做: SimonwAppPool, 那么这个虚拟标识的全名是: IIS AppPool\SimonwAppPool 运行在此Application Pool下的Worker Process从任务管理器中可以看到w3wp.exe是在SimonwAppPool这个用户下运行的. 可以在文件系统中对这个帐户分配权限. 这么做的好处是能够将能够将权限分离开来做粒度更细的配置, 不像是NetworkService有很多应用基于此, 设置一个权限影响一大片.

不过有时候通过UI找不到这个对象大约是个Bug, 通过命令行icacls处理即可.

什么是impersonate

这可能是一个让人容易迷糊的词汇impersonate - 扮演, 装扮. 他是指在某个特定的时刻以一个新的身份来代替已有身份来运行应用程序. 一个请求来临时在IIS处理管道中, 在authentication之前authenticated user的上下文是未知的, 这时你的应用程序以WPI的权限在运行. 在authentication之后authenticated user的上下文被建立, 但依然没有去扮演, 直至请求被映射到他的handler也就是handler mapping后应用程序开始使用扮演则将默认的WPI权限替换为authenticated user的权限来执行应用程序.

举个例子, php配置fastcgi时推荐设置fcgi.impersonate=true, 体现在请求一个php文件时
false: 始终使用WPI的权限, 默认权限是NetworkService
true: 使用authenticated user, 默认为IUSR, 也就是说可以让在站点级别上设置的权限生效.

用户组与用户

在IIS7下需要注意2个特殊的用户和用户组, 在IIS6中有着类似的对应关系

IIS6:IIS_WPG - IIS7:IIS_IUSRS
IIS6:IUSR_MachineName - IIS7:IUSR

最大的改变就是他们都成为了系统内置帐户(built-in account)有着统一的SID, 这样的好处在于做不同机器/系统间的拷贝时可以连带权限一同拷贝过去了, 在以往因为SID不同换了机器权限是无法有效拷贝的只能挨个手动设置, 现在方便多了.

IIS_IUSRS组

默认他会拥有适当的权限来运行Worker Process. 所有的WPI下的运行帐户均被隐式的自动加入到这个组中, 以获得最小的运行权限. 例如当你将SimonwAppPool这个Application Pool的运行身份设置为Application Pool Identity, 那么IIS AppPool\SimonwAppPool这个用户会被自动加入到IIS_IUSRS组中拥有他的全部权限. 因此对此组权限赋值需很小心很容易不知不觉中影响一大片.

IUSR默认匿名帐户

特别需要注意的别看他是一个匿名帐户并且没有密码, 但他属于authenticated users ,而authenticated users属于Users组, 因此IUSR默认具备了Users组的权限.

未完待续。。。

转载于:https://blog.51cto.com/skypegnu1/1666067

IIS 配置 PHP 环境搭建:web 文件管理器相关推荐

  1. Web 文件管理器elFinder 的漏洞链分析

    应用程序与文件系统的交互始终是高度安全敏感的,因为较小的功能漏洞很容易成为可利用漏洞的来源.这种观察在web文件管理器的情况下尤其正确,其作用是复制完整文件系统的功能并以透明的方式将其公开给客户端的浏 ...

  2. Web文件管理器 elfinder-彩龙社区

    最近接到一个需求,客户需要能在web页面进行文件管理,在需求调研时发现一个很好用的开源web文件管理器插件 elfinder,功能比较完善,社区也很活跃,方便二次开发,源码在GitHub上有将近3K的 ...

  3. 介绍分享几款免费的在线Web文件管理器

    经常有朋友在使用一些没有带文件管理器的空间时,苦于没有办法来解压上传的文件压缩包,而如果不先上传压缩包,直接上传文件夹的话耗费的时间太多.还有一些朋友希望将空间变成一个文件存储站,这时就需要一个功能足 ...

  4. 免费的在线Web文件管理器:Net2FTP,Pydio,eXtplorer,KodExplorer–功能强大

    https://www.freehao123.com/web-ftp/ 经常有朋友在使用一些没有带文件管理器的空间时,苦于没有办法来解压上传的文件压缩包,而如果不先上传压缩包,直接上传文件夹的话耗费的 ...

  5. web哪里有php文件,web文件管理器

    摘要:web文件管理器有1.comm.php 公共提示文件2.config.php //配置文件3.filefunction.php   文件函数库4.oprate.php //操用库文件5.file ...

  6. WEB文件管理器2.0版

    WEB文件管理器2.0版 <title>WEB文件管理器2.0版 http://asp2004.net</title> <meta http-equiv="Co ...

  7. Django + Apache + wsgi配置和环境搭建(ubuntu)

    上一篇写了Django + nginx + uwsgi配置和环境搭建(ubuntu) 由于公司服务器环境问题,又配置了apache的环境.记录例如以下: 一. 安装环境: #apache sudo a ...

  8. windows环境搭建web服务器(IIS)

    windows环境下如何搭建web服务器,百度或者谷歌一下都会有很多教程和资源可以参考.这里我也记载一下过程,便于大家参考.至于什么是web服务器,为什么需要web服务器,这里不太明白的也可以百度一下 ...

  9. 【转载】IIS配置php环境

    1 首先安装 IIS, WIN7 安装方法:打开 控制面板–程序和功能-在打开和关闭windows功能中安装 internet信息服务,其中万维网服务中的CGI功能需要开户,如果有必要 全部开启吧 w ...

  10. IIS 配置PHP环境,可以运行PHP网站

    最近需要在本地打开PHP类型的网站, 留个笔记. 我是从这个看的,https://www.cnblogs.com/dengyg200891/p/6056938.html 一:安装IIS服务器 1.进入 ...

最新文章

  1. 制度缺陷,美国96%受访公司的人工智能项目陷于停顿,难怪封堵
  2. php 日志处理类,php中自定义日志处理类(类似于java中的log4j)
  3. 服务机器人平台和后台
  4. JSP页面Table的数据拼接
  5. 【Python】查找目标值在列表中的索引序号
  6. apache rewrite 二级域名
  7. 腾讯副总裁程武取代吴文辉接管阅文集团 后者开盘涨近4%
  8. UI\UX实用素材模板|电子商务企业设计十大趋势
  9. RS232应用----电功率计
  10. pytorch入门——线性回归
  11. 5、手把手教React Native实战之盒子模型BoxApp
  12. 惠普服务器硬件检测软件吗,惠普硬件检测工具DST HP PC Hardware Diagnostics UEFI 6.8.0.0 Rev.A 使用方法...
  13. 科学计算机求年金,科普如何科学使用普通计算器(CPA考试小技巧)
  14. 计算机科学怎么撤稿,撤稿Nature后,这所大学在撤Science!
  15. oracle去掉0x00,Oracle O001 / O00n 进程 100% CPU资源耗用
  16. Flutter 状态管理指南之 Provider
  17. Fabric 环境搭建时bootstrap.sh帮我们做了什么?
  18. GitOps 与 ChatOps 的落地实践
  19. Python实现对哈利波特小说单词统计
  20. css玻璃雨滴效果,纯css实现窗户玻璃雨滴逼真效果.pdf

热门文章

  1. matlab 串口 事件,MATLAB 串口通信
  2. ideal如何用标签输出_实战|如何使用JavaScript访问设备前后摄像头
  3. Android第十七课 Jni string空串跨模块使用崩溃注意事项
  4. 同一个项目的同一DLL多版本的兼容问题
  5. 好书推荐:OpenSuse
  6. Java第二次作业參考代码
  7. 在Windows下搭建RocketMQ
  8. CentOS 7, apm+xcache, rpm包, php module
  9. iOS 网络https传输
  10. linux下文本处理