我在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时可能会发生其他任何事情,或者我错过了错误日志错误的内容吗?
答案 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_
!最后两个可能是你问题的根源。