在 IIS7 上设置 laravel

Posted

技术标签:

【中文标题】在 IIS7 上设置 laravel【英文标题】:setting up laravel on IIS7 【发布时间】:2013-01-01 03:52:33 【问题描述】:

我想设置我的IIS7 服务器,以便让它与用laravelphp 框架)编写的网络应用程序一起工作。

我为CI (link) 找到了类似的东西

但它不适用于laravel(当然我删除了index.php 重定向)。

实际上只有主页有效(www.mysite.com/public

有人在 Laravel 中使用/d IIS7 吗?

提前致谢

【问题讨论】:

【参考方案1】:

我在<configuration></configuration> 的根文件夹中创建了web.config 文件:

<system.webServer>
    <defaultDocument>
        <files>
            <clear />
            <add value="index.php" />
            <add value="default.aspx" />
            <add value="Default.htm" />
            <add value="Default.asp" />
            <add value="index.htm" />
            <add value="index.html" />
        </files>
    </defaultDocument>
    <handlers accessPolicy="Read, Execute, Script" />
    <rewrite>
        <rules>
            <rule name="Imported Rule 2" stopProcessing="true">
                <match url="^(.*)$" ignoreCase="false" />
                <conditions logicalGrouping="MatchAll">
                    <add input="REQUEST_FILENAME" matchType="IsFile" ignoreCase="false" negate="true" />
                    <add input="REQUEST_FILENAME" matchType="IsDirectory" ignoreCase="false" negate="true" />
                </conditions>
                <action type="Rewrite" url="public/R:1" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

然后将公用文件夹的index.php文件复制到项目的根文件夹中,将../paths.php修改为paths.php,如this指南所说

现在一切正常

【讨论】:

【参考方案2】:

我使用下面的代码,重定向到index.php/R:1 而不是public/R:1 直接开箱即用,没有路径更改。

<rewrite>
    <rules>
        <rule name="Imported Rule 2" stopProcessing="true">
            <match url="^(.*)$" ignoreCase="false" />
            <conditions logicalGrouping="MatchAll">
                <add input="REQUEST_FILENAME" matchType="IsFile" ignoreCase="false" negate="true" />
                <add input="REQUEST_FILENAME" matchType="IsDirectory" ignoreCase="false" negate="true" />
            </conditions>
            <action type="Rewrite" url="index.php/R:1" />
        </rule>
    </rules>
</rewrite>

【讨论】:

【参考方案3】:

检查 IIS 中的处理程序映射:

    启动 IIS 点击您的网站 继续“处理程序映射”(在 IIS 块中) 搜索路径 PHP,名称 = PHPxx_via_FastCGI(xx = php 版本) 双击它,单击请求限制,然后单击选项卡“动词”,您可以在其中选择所有动词。这将解决它:-)

【讨论】:

【参考方案4】:

这是我的工作文件,有两条规则:(网站指向公共文件夹)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="RewriteRequestsToPublic">
          <match url="^(.*)$" />
          <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
          </conditions>
          <action type="Rewrite" url="/R:0" />
        </rule>
        <rule name="Imported Rule 1" 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>
  </system.webServer>
</configuration>

【讨论】:

谢谢!为我工作!另外,我必须将 index.php 移动到根路径。【参考方案5】:

经过长时间的谷歌和测试后,它才开始工作。这是我的步骤:

带有 IIS 8.5 的 laravel5

    安装window platform installer 用window平台安装程序安装php-5.6 使用窗口平台安装程序为 IIS 安装 php-manager(可选) 安装Visual C++ Redistributable for Visual Studio 2012 (version x86) 没有这个,FastCgi 进程会意外兴奋(php_info() 将不起作用) 安装composer.exe 导出作曲家供应商 bin 路径到路径set PATH=%PATH%;%USERPROFILE%\AppData\Roaming\Composer\vendor\bin 运行composer global require "laravel/installer=~1.1" 运行lavarel new app 在 IIS 中创建新应用程序并指向&lt;app&gt;/public

就是这样,快乐的拉瓦雷尔!

参考:http://alvarotrigo.com/blog/installing-laravel-4-in-windows-7-with-iis7/

【讨论】:

【参考方案6】:

如果您希望能够检索您的 $_GET 变量,请不要使用:

&lt;match url="^(.*)$" ignoreCase="false" /&gt;

改为使用:

&lt;match url="^" ignoreCase="false" /&gt;

【讨论】:

【参考方案7】:

这是我修复它的方法。 打开配置文件,如果以下映射不存在,将这些行放在

  <rewrite>
    <rules>
      <rule name="Imported Rule 1" stopProcessing="true">
        <match url="^(.*)/$" ignoreCase="false" />
        <conditions>
          <add input="REQUEST_FILENAME" matchType="IsDirectory" ignoreCase="false" negate="true" />
        </conditions>
        <action type="Redirect" redirectType="Permanent" url="/R:1" />
      </rule>
      <rule name="Imported Rule 2" stopProcessing="true">
        <match url="^" ignoreCase="false" />
        <conditions>
          <add input="REQUEST_FILENAME" matchType="IsDirectory" ignoreCase="false" negate="true" />
          <add input="REQUEST_FILENAME" matchType="IsFile" ignoreCase="false" negate="true" />
        </conditions>
        <action type="Rewrite" url="index.php" />
      </rule>
    </rules>
  </rewrite>

【讨论】:

【参考方案8】:

要在 Windows 上安装 IIS,请转到 control panel -&gt; uninstall programs 并按 Turn Off Windows Features On/Off 链接并单击 IIS 并选择 CGI 选项。

从网上下载Web Platform Installerinstall PHP and SQL drivers for IIS

从程序添加网站打开IIS。而公用文件夹指向 laravel/lumen 项目中的Public 文件夹。

用于 Laravel 和 Lumen 项目。在任何可访问的文件夹中从 composer 创建项目。到文件夹结构中的public 文件夹并创建具有以下内容的web.config 文件我从laracasts 获得了这个

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
          <rules>
            <rule name="Rule 1" stopProcessing="true">
              <match url="^(.*)/$" ignoreCase="false" />
              <action type="Redirect" redirectType="Permanent" url="/R:1" />
            </rule>
            <rule name="Rule 2" stopProcessing="true">
              <match url="^" ignoreCase="false" />
              <conditions>
                <add input="REQUEST_FILENAME" matchType="IsDirectory" ignoreCase="false" negate="true" />
                <add input="REQUEST_FILENAME" matchType="IsFile" ignoreCase="false" negate="true" />
              </conditions>
              <action type="Rewrite" url="index.php" />
            </rule>
          </rules>
        </rewrite>
    </system.webServer>
</configuration> 

【讨论】:

以上是关于在 IIS7 上设置 laravel的主要内容,如果未能解决你的问题,请参考以下文章

IIS7上ASMX Web服务的性能调整和优化

IIS7设置将域名不带www跳转到带www上

在 IIS7/Win7 Pro 上增加最大上传文件大小

IIS7错误:不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault="Deny")......

在 IIS7 上使用 Joomla 重写 URL

IIS7错误:不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault="Deny")...