在 Windows IIS 环境下部署 Laravel 框架完整指南
深入对比发现,目前 PHP 领域最流行的 Laravel 框架在功能架构上与 ASP.NET MVC 高度相似,差异主要在于底层实现方式。要在 Windows IIS 环境中成功运行 Laravel,关键在于正确配置 PHP 的 FastCGI 模式、理解其目录结构(public 作为入口),以及处理 URL 路由重写与数据库兼容性问题。
准备条件:本地开发环境基础
在开始配置之前,请确认你的服务器或开发机运行的是 Windows 系统(文中示例为 Win7/Server 2008 R32位,适用于大多数现代 Windows Server)。由于 Laravel 依赖 Composer 且需要较新的 PHP 版本,确保你的系统已安装 Microsoft Visual C++ Redistributable 包是至关重要的第一步,缺少此组件会导致 PHP 无法加载。
第1步:安装与配置 PHP
Laravel 对 PHP 版本有严格要求,建议前往 http://windows.php.net/download/ 下载对应版本的 Thread Safe (TS) 或 Non-Thread Safe (NTS) 版本。对于 IIS 环境,通常推荐使用 NTS 版本以获得更好的性能。
操作注意:如果你使用的是 Windows Server 配合 IIS,需确保下载的文件名中包含 VC11 或更高版本的标识(如 VC11 x86 Non Thread Safe)。这是因为 PHP 依赖微软的 C++ 运行库。
- 将下载的
.zip文件解压到指定的目录,例如C:\PHP。 - 复制一份
php.ini-development并重命名为php.ini。 - 打开
php.ini,找到extension_dir属性,将其修改为绝对路径,例如:extension_dir = "C:/PHP/ext"。 - 根据需要启用必要的扩展(如
pdo_mysql,mbstring,gd等)。去掉对应的;extension=xxx.dll前面的分号即可。
第2步:在 IIS 中配置 PHP 支持
IIS 默认不支持 PHP,需要通过 FastCGI 模块进行集成。虽然可以使用命令行工具 php-cgi.exe 注册 Handler Mappings,但为了可视化管理方便,许多开发者会选择安装第三方管理工具(注:原教程提及 phpmanager,该工具已停止维护,现推荐直接在 IIS 管理器中或通过 Web Platform Installer 配置,若习惯图形界面可使用类似功能的现代替代品)。
即便不使用额外插件,原理也是一样的:在 IIS 中映射 .php 请求到 PHP CGI 程序。
关键配置点:
- FastCGI 设置:确保 IIS 的 CGI 模块已开启。
- 缓存优化:在生产或准生产环境中,建议在 php.ini 或 IIS 配置中启用 Wincache。例如启用
php_wincache.dll可以显著提升 PHP 代码执行速度。
安装或配置完毕后,可以通过 IIS 管理器查看站点属性,确认 PHP Manager 或相关的 Handler Mapping 图标出现,这表明 IIS 已成功识别 PHP 处理能力。
在配置过程中,务必核对 PHP Extensions 列表与 php.ini 中的设置是否一致。如果两者冲突,优先以实际加载结果为准。启用 wincache 后,重启 IIS 服务以生效。
第3步:下载并初始化 Laravel 项目
Laravel 是一个重度依赖依赖管理的框架,必须安装 Composer(PHP 的包管理器,类似于 Node.js 的 npm)。
- 安装 Composer:从官网下载 Windows 安装程序,并确保在安装向导中正确指定了你刚才安装的 PHP 路径。
- 创建项目:新建一个文件夹用于存放项目(如
D:\Websites\LaravelApp)。- 在此文件夹空白处 Shift + 右键,选择“在此处打开 Powershell 窗口”或“命令提示符”。
- 输入命令:
composer create-project laravel/laravel --prefer-dist
- 等待安装完成:Composer 会自动下载 Laravel 框架及其所有依赖组件至
vendor文件夹中。
第4步:MySQL 配置与兼容性调整
安装 MySQL 服务并非难点,但在运行 Laravel 时,可能会遇到 Eloquent ORM 报错的情况,这通常与 MySQL 的 SQL 模式有关。
常见问题与解决:
Laravel 某些版本的迁移文件或 ORM 操作可能对 STRICT_TRANS_TABLES 敏感。如果发现插入或更新数据时抛出异常,请检查 MySQL 配置文件(通常是 my.ini):
找到 sql-mode 参数:
# Set the SQL mode to strict
# sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
尝试修改为(移除 STRICT 相关模式,视具体 Laravel 版本而定,新版的 Laravel 通常能更好地处理严格模式,若遇阻可暂时放宽):
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
修改后重启 MySQL 服务。如果在正常项目中未遇到此错误,可保持默认推荐配置。
第5步:配置 IIS 虚拟站点
这是新手最容易出错的一步。Laravel 的路由入口并不是项目的根目录,而是 public 文件夹。
- 添加网站:在 IIS 管理器中添加一个新站点。
- 物理路径:指向你 Laravel 项目下的
public子文件夹(例如D:\Websites\LaravelApp\public)。 - 主机名:设置本地测试域名,如
laravel.test,并记得在 Windows 的C:\Windows\System32\drivers\etc\hosts文件中添加相应解析:127.0.0.1 laravel.test。 - 应用程序池:确保使用该站点的 .NET CLR 版本设置为“无托管代码”,集成管道模式根据需求选择(通常集成模式即可,取决于 PHP FastCGI 的配置要求)。
配置完成后,可以通过 phpinfo() 页面验证当前 IIS 使用的 PHP 版本是否正确。
第6步:处理无后缀 URL 的 404 错误
Laravel 采用单入口文件机制,URL 通常不带 .php 后缀(如 example.com/users)。在 IIS 上,如果没有相应的 URL Rewrite 规则,访问这些路由会直接返回 404 Not Found。
- 安装 URL Rewrite 模块:如果 IIS 管理器中没有“Rewrite”图标,请通过 Windows Update 或 Microsoft Web Platform Installer 安装 IIS URL Rewrite Module。
- 导入规则:
- 进入 IIS 管理器,选中你的 Laravel 站点。
- 双击打开 Rewrite Rules。
- 在右侧操作面板点击 Import Rules...。
- 选择规则文件:在 Laravel 根目录(即
public文件夹外层的目录,有些版本规则在 public 内,需确认public/.htaccess是否存在)中找到.htaccess文件,或者手动添加等效的 IISweb.config规则。通常 Laravel 会在public目录下放置.htaccess,我们需要将其逻辑转换为 IIS 规则或直接导入该文件内容供 IIS 读取。
导入成功后,点击右侧的“Apply”应用更改。此时,再次访问不带后缀的路由,应该就能正常显示页面了。
总结
至此,你在 Windows IIS 环境下搭建 Laravel 开发环境的全部流程已完成。访问配置的域名,你将看到 Laravel 默认的欢迎页面。这套环境不仅可用于开发,稍作优化(如启用 OPcache、Wincache、配置 SSL)后即可投入生产使用。
以上就是在 Windows IIS 环境下搭建 Laravel 开发环境的详细内容,更多关于 PHP 框架部署与优化的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













