我正试图将最新版本的代码部署到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上的其他帖子,因为我已经看到了所有的帖子。
更新:回滚到旧代码,使网站再次工作,但有趣的是,无论我添加什么代码(甚至是一行代码或回显),它都会使网站崩溃!所以我只想说,这与我写的代码无关
现在修复:https://devcenter.heroku.com/changelog-items/486
潜在的问题是使用默认重写将对.php
文件的请求代理给PHP-FPM的方式,这偶尔会干扰用户域的重写。
然而,你真正应该做的是设置你的文档根目录,所以它是app/webroot/
,而不是首先重写到那个位置(然后让.htaccess
在那里做另一轮重写)。
创建,添加,提交和推送一个Procfile
,看起来像这样:
web: vendor/bin/heroku-php-apache2 app/webroot/
也许你的意思是。+在你的第二个rewriterrule,所以它并不适用于/的请求,并导致你循环。