安装环境 -> 配置 IIS -> 配置 PHP -> 测试网站

iis7发布php网站
(图片来源网络,侵删)

下面我将为你提供一个详细、分步的指南,适用于 Windows Server 2008 R2 及更高版本(包括 Windows 10/11 的 IIS 功能)。


核心概念:IIS 如何处理 PHP?

IIS 本身是一个 Web 服务器,它原生擅长处理 HTML、ASP.NET 等,但不认识 PHP 文件,我们需要一个“桥梁”程序,这个程序就是 PHP 的 FastCGI 进程管理器

  • FastCGI:这是一个协议,允许 IIS 将 PHP 请求转发给一个独立的 PHP-CGI 进程来处理,处理完毕后,PHP-CGI 将结果返回给 IIS。
  • PHP Manager:这是一个微软官方提供的 IIS 管理工具,可以极大地简化 PHP 的配置过程,强烈推荐使用。

第一步:安装所需组件

安装 IIS

如果你的服务器上还没有安装 IIS,请按以下步骤操作:

  1. 打开 服务器管理器 (Server Manager)。
  2. 点击 “添加角色和功能” (Add Roles and Features)。
  3. 在向导中,点击 “下一步” 直到 “角色” (Roles) 页面。
  4. 勾选 “Web 服务器 (IIS)” (Web Server (IIS))。
  5. 在弹出的窗口中,确保勾选以下 IIS 功能(这些对于运行 PHP 至关重要):
    • 应用程序开发
      • [x] ASP.NET (虽然我们不用,但最好安装)
      • [x] CGI (这是运行 PHP FastCGI 的基础!)
    • 常见 HTTP 功能
      • [x] 默认文档 (Default Document)
      • [x] HTTP 重定向 (HTTP Redirection)
      • [x] 目录浏览 (Directory Browsing) (可选,方便调试)
    • 健康工具和日志记录
      • [x] 请求监控 (Request Monitoring)
      • [x] 日志 (Logging)
  6. 点击 “安装” (Install) 等待完成。

安装 PHP Manager (推荐)

这是简化配置的最佳方式。

  1. 下载 PHP Manager for IIS:
  2. 双击运行安装程序,按照向导完成安装,安装后,IIS 管理器中会出现一个新的 “PHP Manager” 图标。

下载并解压 PHP

  1. 从 PHP 官方网站下载最新的非线程安全 (Non-Thread Safe) 版本,对于 IIS + FastCGI,NTS 版本是推荐的选择。
    • 官方下载地址:https://windows.php.net/download/
    • 选择 "VC15 x64 Non Thread Safe" 或更新的版本 (VC16, VC19),注意选择 x64 版本,以匹配 64 位的 IIS。
  2. 将下载的 ZIP 压缩包解压到一个固定的、无空格的路径下,C:\php

第二步:使用 PHP Manager 配置 PHP

这是最核心的一步,打开 IIS 管理器 (可以在开始菜单搜索或从服务器管理器打开)。

  1. 注册 PHP

    • 在左侧的连接窗格中,点击你的服务器节点。
    • 在中间窗格中,双击 “PHP Manager”
    • 在右侧的“操作”窗格中,点击 “Register PHP version...” (注册 PHP 版本)。
    • 在弹出的窗口中,点击 “浏览”,找到你刚刚解压的 PHP 文件夹,然后选择 php-cgi.exe 文件(C:\php\php-cgi.exe)。
    • 点击 “确定”

    PHP Manager 会自动完成以下操作:

    • 在 IIS 中为 .php 文件映射到 FastCGI 处理程序。
    • 创建一个 php.ini 配置文件的副本(通常在 C:\php 目录下)。
    • 将该 php.ini 文件设置为活动配置。
  2. 配置 php.ini

    • 在 PHP Manager 的操作窗格中,点击 “Open php.ini” (打开 php.ini),这会直接打开活动配置文件。
    • 修改以下几个关键配置项:
      • cgi.fix_pathinfo = 1非常重要! 这个选项让 PHP 能够正确解析 URL 中的路径信息(/index.php/path/to/something),对于很多框架(如 WordPress, Laravel)是必需的。
      • extension_dir = "ext":确保这个路径指向你 PHP 文件夹下的 ext 目录(C:\php\ext)。
      • date.timezone = "Asia/Shanghai":设置你的时区,避免 PHP 警告。
      • upload_max_filesize = 32Mpost_max_size = 32M:根据你的需求调整上传文件大小限制。
      • 启用你需要的 PHP 扩展:去掉扩展名前面的分号 ,要启用 MySQL 支持,找到 ;extension=mysqli 并改为 extension=mysqli
    • 保存 php.ini 文件。
  3. 重启 IIS

    • 在 IIS 管理器中,点击服务器节点。
    • 在右侧的“操作”窗格中,点击 “Restart” (重启),这一步是让新的 PHP 配置生效所必需的。

第三步:创建和配置网站

PHP 环境已经就绪,我们来创建一个网站来托管你的 PHP 文件。

  1. 创建网站

    • 在 IIS 管理器左侧,右键点击 “网站” (Sites),选择 “添加网站...” (Add Website...)。
    • 网站名称:给你的网站起一个名字,"My PHP Site"。
    • 物理路径:选择你的 PHP 网站文件所在的文件夹(C:\inetpub\wwwroot\my-php-site)。
    • 类型:选择 “http”
    • IP 地址:通常选择 “全部未分配” (All Unassigned)。
    • 端口:默认为 80,80 端口被占用,可以改为其他端口(如 8080)。
    • 主机名:留空,表示通过 IP 地址直接访问。
    • 点击 “确定”
  2. 设置默认文档

    • 在左侧选中你刚刚创建的网站。
    • 在中间窗格中,双击 “默认文档” (Default Documents)。
    • 在右侧点击 “添加...”
    • 输入 index.php,然后点击 “确定”
    • 可以使用右侧的“上移/下移”按钮,将 index.php 调整到列表的最顶部,这样 IIS 会优先查找它。
  3. 配置目录权限

    • 在左侧选中你的网站。
    • 在中间窗格中,双击 “处理程序映射” (Handler Mappings)。
    • 在列表中,你应该能看到一个名为 PHP_via_FastCGI 的映射,指向 php-cgi.exe,这表示配置成功。
    • 右键点击你的网站,选择 “编辑权限...”
    • “安全” 选项卡中,确保 IIS_IUSRSSYSTEM 用户都有 “读取”“执行” 权限,如果你的网站需要写入文件(如上传、生成缓存),还需要添加 “写入” 权限。

第四步:测试网站

这是验证所有配置是否正确的最后一步。

  1. 创建测试文件

    • 在你的网站物理路径下(C:\inetpub\wwwroot\my-php-site),创建一个名为 info.php 的文件。
    • 用记事本或代码编辑器打开它,输入以下内容:
      <?php
      phpinfo();
      ?>
  2. 访问测试文件

    • 打开浏览器,访问你的网站地址:
      • 如果使用默认端口 80:http://localhosthttp://你的服务器IP
      • 如果使用了其他端口(如 8080):http://localhost:8080http://你的服务器IP:8080
    • 如果一切正常,你应该能看到一个详细的 PHP 信息页面,显示了你的 PHP 版本、配置信息、已加载的模块等。
  3. 安全提示

    • 测试完成后,请务必删除 info.php 文件! 这个文件会暴露服务器的大量敏感信息,是一个严重的安全风险。

常见问题与排错

  • 问题: 访问 .php 文件时,浏览器直接下载文件而不是显示内容。

    • 原因: FastCGI 处理程序映射没有正确建立。
    • 解决: 检查“处理程序映射”中是否存在 PHP_via_FastCGI,如果没有,可以手动添加,或者重新运行 PHP Manager 的注册步骤。
  • 问题: HTTP 错误 500.0 - Internal Server Error。

    • 原因: 最常见的原因是 php.ini 配置错误。
    • 解决:
      1. 检查 php.ini 中的语法是否正确,特别是 cgi.fix_pathinfo = 1
      2. 查看 IIS 的详细错误日志,在 IIS 管理器中,双击 “错误页” (Error Pages),选择 500 状态码,然后点击右侧的 “编辑功能设置...”,将“详细错误”设置为“ true”,这样浏览器会显示更具体的 PHP 错误信息。
      3. 检查 PHP 扩展(如 php_mysql.dll)是否存在或与 PHP 版本不匹配。
  • 问题: 404.0 - Not Found。

    • 原因: 网站物理路径错误,或者文件不存在。
    • 解决: 仔细检查网站绑定的“物理路径”是否正确指向你的项目文件夹。

恭喜你!至此,你已经成功在 IIS 7 上配置并发布了一个 PHP 网站。