在IIS7上部署PHP

时间:2024-05-22 12:18:09

公司的服务器买的是阿里云,网站也是部署在IIS7上的,七月份的时候自己也在阿里云买了个低配版的服务器用作自己学习测试代码的。用惯了PHP集成环境,于是不想在服务器上安装集成环境,想在IIS7上部署,于是自己开始百度,网上有各种详细的教程,一步一步教你怎么做,但是由于自己在配置PHP.ini文件上没弄明白,卡了很久,再加上加班了很久,今天终于静下来在PHP官网上一步一步地看教程,最后终于部署成功了。下面来介绍下在IIS7上部署PHP的过程。

我的阿里云服务器系统是:winserver2008 r2

安装PHP还需要VC(必须),这里有官方说明:(下载地址

VC11, VC14 & VC15
More recent versions of PHP are built with VC11, VC14 or VC15 (Visual Studio 2012, 2015 or 2017 compiler respectively) and include improvements in performance and stability.

  • The VC11 builds require to have the Visual C++ Redistributable for Visual Studio 2012 x86 or x64 installed
  • The VC14 builds require to have the Visual C++ Redistributable for Visual Studio 2015 x86 or x64 installed
  • The VC15 builds require to have the Visual C++ Redistributable for Visual Studio 2017 x64 or x86 installed

第一步:选择和下载PHP发行包

根据所用 web 服务器选择合适的版本,PHP下载地址(可阅读官网下载页中的侧栏Which version do I choose?)
我的阿里云服务器系统是64位,用的是IIS,所以选择PHP 5.6 (5.6.31)VC11 x64 Non Thread Safe
PHP官网上对PHP的安装包目录有详细的介绍,点开链接即可查看;

第二步:修改PHP.ini文件

  1. extension_dir = <指向扩展库目录的路径> - extension_dir 需要指向存放 PHP 扩展库文件的目录。可以是绝对路径(如 “C:\PHP\ext”)或相对路径(如 “.\ext”)。在 php.ini 文件中要加载的扩展库都必须在 extension_dir 所指定的目录之中。
  2. extension = xxxxx.dll - 对每个需要**的扩展,都需要一行相应的 “extension=” 语句来说明 PHP 启动时加载 extension_dir 目录下的哪些扩展。
  3. log_errors = On - PHP 有错误日志的功能可以将错误报告发送到一个文件中,或者系统服务中(例如系统日志),与下面的 error_log 指令配合工作。在 IIS 下运行时,log_errors 应被**,并且配合有效的 error_log。
  4. error_log = <指向错误日志文件的路径> - error_log 需要指向一个具有绝对或相对路径的文件名用于记录 PHP 的错误日志。Web 服务器需要对此文件有可写权限。最常用的位置是各种临时目录,例如 “C:\inetpub\temp\php-errors.log”。
  5. cgi.force_redirect = 0 - 在 IIS 下运行时需要关闭此项指令。这是个在许多其它 web 服务器中都需要**的目录安全功能,但是在 IIS 下如果**则会导致 PHP 引擎在 Windows 中出错。
  6. cgi.fix_pathinfo = 1 - 此指令可以允许 PHP 遵从 CGI 规则访问真实路径信息。IIS 的 FastCGI 实现需要**此指令。
  7. fastcgi.impersonate = 1 - IIS 下的 FastCGI 支持模拟呼叫用户方安全令牌的能力。这使得 IIS 可以定义请求方的安全上下文。
  8. fastcgi.logging = 0 - FastCGI 日志在 IIS 下应被关闭。如果**,则任何类的任何消息都被 FastCGI 视为错误条件从而导致 IIS 产生 HTTP 500 错误。
  9. session存储路径,如:session.save_path = “d:\server\web\session” (这里写一个保存session的路径)

    配置完成后,将php.ini拷贝一份放到c:\windows下。在win7的IIS7上配置php时,并不需要把php.ini和相关文件拷到系统目录下了。

第三步:设置IIS(确保iis上安装了cgi模块)

  • 按以下示例在 php.ini 文件中配置 针对 CGI- 和 FastCGI- 的指令:

fastcgi.impersonate = 1
fastcgi.logging = 0
cgi.fix_pathinfo=1
cgi.force_redirect = 0

  • 打开IIS,选中站点,打开处理程序映射界面。
    在IIS7上部署PHP

  • 在右边“操作”面板中点击“添加模块映射…”;
    在IIS7上部署PHP

    在IIS7上部署PHP