1

我在 Microsoft Azure 上有一个使用 Laravel 5.2 和 PHP 7 的应用服务。我遇到的问题是,有时我在浏览网站时会收到错误消息:

由于发生内部服务器错误,无法显示此页面

这是随机发生的,但是当它发生时它会阻塞路由,例如我正在浏览地址http://elsitio.com/details/12时没有问题,然后我再次单击它会引发错误。

为了摆脱错误,我必须重新启动应用服务,它会正常工作,所以我认为它与应用中的视图缓存有关。

除了设置 Laravel 之外,.env我没有进行任何配置。

使用 phpinfo 我发现该站点似乎在 FastCGI 上运行,但我不太确定,因为显示的错误似乎是由 IIS 管理的。

我的问题是:

  1. 关于可能导致问题的任何想法?

  2. 如何在不重新启动应用服务的情况下重新启动 FastCGI/IIS 服务,例如在 Linux 上的 Apache 中将是service httpd restart.

更新 1

这是一个非常奇怪的错误,有时我会收到一些组件丢失的错误:Interface 'Illuminate\Contracts\Queue\QueueableCollection' not found然后我这样做$: composer install了,它开始工作,然后我重新加载页面,我收到另一个与丢失组件相关的错误。

如果我更改 PHP 版本,它会再次开始工作:(。

4

3 回答 3

1

我在迁移到 Azure 时遇到了一个问题,即 Composer 在我运行composer install. 尝试从此处手动下载文件并运行composer dump-autoload.

于 2016-12-05T08:59:01.493 回答
1

通常,当您收到 500 http 错误时,这意味着您可能会发生 php 致命错误。您可以启用显示错误配置来诊断错误。同时,考虑到您遇到随机问题,您还可以启用错误日志,以跟踪问题。

您可以参考Azure 网站上的关于 PHP 致命错误和错误日志的信息以获取更多信息。您也可以参考如何:更改内置 PHP 配置

如有任何进一步的疑虑,请随时告诉我。

于 2016-11-28T06:26:55.517 回答
0

如果一切都正确完成,只需执行以下操作。

  1. 创建一个web.confpublic
  2. 复制下面的代码。

    <configuration>
      <system.webServer>
        <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>
      </system.webServer>
    </configuration>
    
于 2018-01-15T22:37:19.710 回答