当Debug设置为零时,Heroku上的CakePHP错误

时间:2014-01-29 04:31:46

标签: cakephp heroku

我在Heroku上使用Heroku PHP buildpack(https://github.com/heroku/heroku-buildpack-php)设置了CakePHP应用程序。

将Debug设置为1,应用程序使用文件缓存并缩短缓存的生命周期。此外,还会出现DebugKit工具栏。

将Debug设置为0,应用程序使用APC。

当我将Debug设置为1时,它可以正常工作,但DebugKit工具栏显示,并且缓存基本上是关闭的。当我设置Debug = 0时,我得到标准的“内部错误”消息。运行“heroku日志”只显示与php无法写入tmp目录(特别是错误日志)相关的错误。我试图将cakePHP写入stdout,但这没有帮助。

要查看导致问题的确切原因,我从安装中删除了DebugKit,并使Debug = 1的缓存与Debug = 0匹配。我认为这会导致应用程序再次出错,但它仍然有效。当关闭Debug时可能会发生其他任何事情,或者我错过了错误日志错误的内容吗?

2 个答案:

答案 0 :(得分:4)

我最终成功地完成了这项工作。答案是确保buildpack创建app / tmp目录和所有子目录。我的印象是,如果不需要它们,cakePHP就不会担心它们,但我不对。

我想让它们不在repo中,所以在buildpack编译文件中我添加了:

CAKEPHP_APP_TMP_PATH="www/app/tmp"

# make tmp dir
echo "-----> Creating CakePHP tmp directories"
mkdir -p $CAKEPHP_APP_TMP_PATH/cache/models
mkdir -p $CAKEPHP_APP_TMP_PATH/cache/persistent
mkdir -p $CAKEPHP_APP_TMP_PATH/cache/views
mkdir -p $CAKEPHP_APP_TMP_PATH/logs
mkdir -p $CAKEPHP_APP_TMP_PATH/sessions
mkdir -p $CAKEPHP_APP_TMP_PATH/tests
chmod -R 777 $CAKEPHP_APP_TMP_PATH

这样,目录就位,但它们似乎从未被使用过。现在,应用程序正在运行,Debug设置为0。

答案 1 :(得分:1)

如果你能获得对tmp文件夹的写访问权限,那么你就可以看到日志了。

Cake的这些内部错误通常与模型的缓存有关。因此,在APC中,您可能拥有与您的数据库不匹配的旧缓存。

尝试清除APC缓存,看看是否有帮助。

PS:蛋糕应用程序有几个缓存,所以你必须确保使用什么......你至少有default_cake_core__cake_model_ !最后两个可能是你问题的根源。