【问题标题】:Request exceeded the limit of 10 internal redirects when deployed on Heroku在 Heroku 上部署时,请求超出了 10 个内部重定向的限制
【发布时间】:2014-08-05 10:59:27
【问题描述】:

我正在尝试将最新版本的代码部署到 Heroku(在本地完美运行,完全相同的代码),我看到错误 500。当我查看 heroku logs 时,我看到以下错误:

2014-06-15T12:41:20.661382+00:00 app[web.1]: [Sun Jun 15 12:41:20.555906 2014] [core:error] [pid 65:tid 139773788280576] [client 10.164.12.48:57546] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

我将 LogLevel 设置为调试:

heroku config:add LOG_LEVEL=DEBUG

但我仍然遇到同样的错误。正如一些人建议的那样,我还尝试将RewriteBase / 添加到我在 CakePHP 主文件夹中的 .htaccess 文件中:

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteBase /
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

我也在webroot文件夹中尝试过,但仍然没有运气!

人们也说这可能是由于/tmp/文件夹的权限不足,但是当我更改读写权限时,Git看不到更改。在 Heroku 上部署时,我什至强制降级 PHP!

有了所有的建议,我仍然觉得很奇怪,因为我没有更改任何配置文件中的任何内容,也没有更改任何文件的任何权限。有谁知道是什么原因造成的?请不要让我参考 StackOverflow 中的其他帖子,因为我已经看过所有这些帖子了。

更新: 回滚到旧代码,让网站再次运行,但有趣的是,无论我在代码中添加什么(甚至是一行代码或回显),它都会使网站崩溃!所以我只想说,和我写的什么代码无关。

【问题讨论】:

  • 您不能使用这样的配置变量设置 Apache LogLevel。最接近的方法是使用 custom configLogLevel rewrite:debug 和其他一些东西(如 DirectoryIndex index.php)。

标签: php apache cakephp heroku


【解决方案1】:

现在已修复:https://devcenter.heroku.com/changelog-items/486

根本问题是使用默认重写将对 .php 文件的请求代理到 PHP-FPM 的方式,这有时会干扰用户级重写。

然而,你真正应该做的是set your document root,所以它是app/webroot/,而不是先重写到那个位置(然后让.htaccess在那里进行另一轮重写)。

创建、添加、提交和推送如下所示的Procfile

web: vendor/bin/heroku-php-apache2 app/webroot/

【讨论】:

  • 在我联系 Herku 支持之前,这让我很生气。谢谢你:)
【解决方案2】:

也许你的意思是 .+ 在你的第二个 RewriteRule 中,所以它不适用于 / 的请求并导致你循环。

每次在 htaccess 中的 RewriteRule 中发生替换时,整个规则集都会在替换上再次运行。

【讨论】:

    猜你喜欢
    • 2013-10-04
    • 1970-01-01
    • 2019-03-08
    • 2018-03-18
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 2014-09-25
    相关资源
    最近更新 更多