必须将IIS网站根目录设为Laravel项目的public子目录,并配置URL重写(web.config)、PHP FastCGI、IIS_IUSRS读写权限及应用池为“无托管代码”,否则必现404或500错误。

要在Windows IIS服务器上成功运行Laravel应用,必须将网站根目录精确指向项目public子目录,并完成URL重写、PHP FastCGI配置及权限设置,否则访问时必然出现404错误或“Whoops, looks like something went wrong”白屏。
安装PHP与启用必要扩展
从windows.php.net/download下载与你的IIS架构匹配的Non-Thread-Safe(NTS)版本PHP ZIP包(推荐PHP 8.1+,VC17 x64),解压到C:\php;
复制php.ini-development为php.ini,用文本编辑器打开,取消以下三行前的分号注释:extension=php_fileinfo.dllextension=php_opcache.dllextension=php_mbstring.dll;
这一步漏掉fileinfo会导致Composer安装失败,mbstring缺失则Laravel启动直接报错;
将C:\php加入系统环境变量Path,然后在CMD中执行php -v验证输出版本号。
配置IIS并启用FastCGI支持
按Win+R输入optionalfeatures→勾选“Internet Information Services”→展开“Web管理工具”→勾选“IIS管理控制台”→展开“万维网服务”→勾选“应用程序开发功能”→务必勾选【CGI】;
安装完成后,以管理员身份运行PowerShell,执行iisreset /restart;
打开IIS管理器→左侧连接栏右键“服务器名称”→“管理”→“添加角色和功能”,确认已启用FastCGI模块;
若未看到“处理程序映射”或“FastCGI设置”节点,说明CGI未启用,必须重装——这是后续所有步骤的前提。
安装PHP Manager并关联PHP版本
下载PHP Manager for IIS(官方仅支持IIS 7.5–10,地址:https://phpmanager.codeplex.com/,或使用存档镜像);
运行MSI安装程序,全程默认下一步;
安装后刷新IIS管理器,在左侧站点列表上方会出现“PHP Manager”图标,点击进入;
在PHP Manager界面中点击“Register PHP version”→浏览选择C:\php\php-cgi.exe→确认注册;
这一步注册失败会导致后续所有PHP页面返回500错误,且IIS日志中无明确提示,务必检查php-cgi.exe路径是否正确、是否有读取权限。
创建Laravel项目并调整目录结构
新建文件夹D:\laravel-app,Shift+右键空白处→“在此处打开PowerShell窗口”;
执行composer create-project --prefer-dist laravel/laravel .(注意末尾英文句点);
等待输出Application key set successfully后,项目即生成完毕;
此时必须确认:IIS网站的物理路径不能设为D:\laravel-app,而必须设为【D:\laravel-app\public】——这是Laravel安全模型强制要求,设错将导致.env等敏感文件被直接下载。
配置URL重写规则(关键防404)
在D:\laravel-app\public目录下新建纯文本文件,命名为web.config,内容如下:
<?xml version="1.0" encoding="UTF-8"?><br><configuration><br> <system.webServer><br> <rewrite><br> <rules><br> <rule name="Laravel Routes" stopProcessing="true"><br> <match url="^(.*)$" ignoreCase="false" /><br> <conditions logicalGrouping="MatchAll"><br> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /><br> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /><br> </conditions><br> <action type="Rewrite" url="index.php" /><br> </rule><br> </rules><br> </rewrite><br> </system.webServer><br></configuration>
保存后,在IIS管理器中选中该站点→双击“URL重写”→点击右侧“导入规则”→选择此web.config文件→点击“应用”;
这一步不可跳过,IIS原生不识别Apache的.htaccess,没有此重写规则,所有路由(如/login)均返回404。
设置IIS应用池与文件权限
在IIS管理器左侧→“应用池”→右键“DefaultAppPool”→“高级设置”→将“.NET CLR版本”改为“无托管代码”;
右键该应用池→“回收”→勾选“固定时间间隔(分钟)”,设为1440(即每天一次),避免内存泄漏累积;
右键D:\laravel-app文件夹→“属性”→“安全”→“编辑”→“添加”→输入IIS_IUSRS→勾选“修改”和“读取和执行”→确定;
特别注意:D:\laravel-app\storage和D:\laravel-app\bootstrap\cache两个目录还需额外赋予IIS_IUSRS“写入”权限,否则日志无法生成、配置缓存失败,Laravel将拒绝启动。
创建网站并测试访问
IIS管理器左侧→右键“网站”→“添加网站”→填写:
网站名称:laravel-site
物理路径:【D:\laravel-app\public】
绑定:类型http,IP地址全部未分配,端口80,主机名留空或填laravel.test;
点击“确定”后,双击新站点→右侧“浏览网站”→若看到Laravel默认欢迎页,则部署成功;
若显示500错误,立即打开C:\inetpub\logs\LogFiles\W3SVC1中最新日志,搜索“500”,定位具体失败模块;
若显示“Index of /”,说明web.config未生效或未放置在public目录内,需重新检查路径与文件名大小写。


















