在Heroku上部署时,请求超出了10个内部重定向的限制

时间:2014-06-15 12:55:02

标签: php apache cakephp heroku

我正在尝试将最新版本的代码部署到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设置为debug:

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中的其他帖子,因为我已经看过所有帖子。

更新 回滚到旧代码,让网站再次运行,但有趣的是,我添加到代码(甚至是一行代码或回声)并不重要,它会崩溃网站!所以我只想说它与我编写的代码无关。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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/