You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在IIS服务器为各站点设置PHP版本?Laravel 9部署遇错求助

IIS部署Laravel 9时PHP版本配置与web.config异常的解决方案

一、给指定站点绑定正确PHP版本

Laravel 9要求PHP 8.0及以上版本,按以下步骤操作:

  • 先确认目标PHP版本已安装,且开启了Laravel必需的扩展:openssl、pdo_mysql、mbstring、fileinfo、tokenizer、ctype(找到php.ini对应项,去掉前面的分号即可启用)
  • 打开IIS管理器,找到目标站点,右键选择「PHP管理器」,点击「更改PHP版本」,勾选对应版本的PHP池即可完成绑定
  • 如果找不到对应版本选项,手动注册到IIS:打开管理员命令提示符,先执行你的PHP安装路径\php-cgi.exe -v确认版本正常,再运行以下命令完成注册:
appcmd set config /section:system.webServer/fastCgi /+"[fullPath='你的PHP安装路径\php-cgi.exe',arguments='',maxInstances=10,idleTimeout=300,activityTimeout=300,requestTimeout=900,instanceMaxRequests=10000,protocol='NamedPipe',flushNamedPipe='False']"

注册完成后回到站点的PHP管理器重新绑定版本即可

二、阻止web.config自动更改并修复配置

IIS修改站点设置时经常会自动篡改web.config,按以下步骤处理:

  • 先备份当前的web.config文件,避免操作失误导致无法恢复
  • 手动替换成Laravel专用的web.config内容,覆盖自动生成的版本:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Laravel" stopProcessing="true">
                    <match url="^(.*)$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php/{R:1}" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite>
        <defaultDocument>
            <files>
                <add value="index.php" />
            </files>
        </defaultDocument>
        <handlers>
            <add name="PHP_via_FastCGI" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="你的PHP安装路径\php-cgi.exe" resourceType="Either" requireAccess="Script" />
        </handlers>
    </system.webServer>
</configuration>
  • 将web.config设置为只读:右键文件→属性→安全→编辑→给IIS应用池用户(一般为IIS AppPool\你的站点池名称)添加「拒绝修改」权限,防止文件被自动篡改
  • 把站点应用池的.NET版本设置为「无托管代码」,Laravel是PHP项目,不需要.NET托管环境

三、常见报错排查

  • 遇到500内部服务器错误时,打开IIS的「错误页」功能,设置为显示详细错误信息,即可定位具体问题
  • 检查Laravel项目的storage和bootstrap/cache目录权限,给应用池用户分配读写权限,否则会出现权限相关报错
  • 生产环境中执行php artisan config:cache和php artisan route:cache优化配置,同时确认.env文件中的APP_URL、数据库配置等信息正确

内容的提问来源于stack exchange,提问作者ankit microlent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 01:50:35