【问题标题】:CakePHP 2.0 - Cake was unable to write to File cacheCakePHP 2.0 - Cake 无法写入文件缓存
【发布时间】:2011-11-26 22:06:55
【问题描述】:

我正在使用 CakePHP 2.0 RC-1。从 SVN 签出项目后,应用程序开始抱怨它无法将缓存文件写入 tmp/cache 目录。由于这是本地的,我知道该目录是可写的,而且我可以清楚地看到目录中甚至充满了文件,所以错误有点奇怪。

以下是我遇到的一些错误:

_cake_core_ cache was unable to write 'cake_dev_nb' to File cache

fopen(c:\cake\app\tmp\cache\models\cake_model_default_media) [function.fopen]: failed to open stream: No error [CORE\Cake\Cache\Engine\FileEngine.php, line 127]

没有错误?!什么?

现在,如果我查看 FileEngine 文件,在第 127 行显示:

if (!$handle = fopen($this->_File->getPathName(), 'c')) {
            return false;
}

通过将“c”替换为“w”,不会遇到任何错误,并且一切正常。但是,没有必要修改核心 Cake 库来解决这个问题。让我重复一遍,在我的另一台计算机上,它按预期工作,无需编辑核心库。两者都使用 Windows 操作系统,对 tmp/cache-folder 的读/写权限完全相同。

编辑:这是一个遇到我在本地遇到的错误输出的站点

通过谷歌搜索找到的示例网站。不是我的网站:http://www.12h30.net/credit/

有什么建议吗?

更新:原因如下:如果您的 PHP 版本过低(如 cmets 中的“api55”所述),在 5.2.6 之前,就会出现这种情况。谢谢回复。希望这对你也有帮助。

【问题讨论】:

  • 你有什么版本的php?请记住,2.0 仍处于 RC 阶段,因此可能会出现此类错误...对于模式 c 或 c+,您需要 php 5.2.6 或更高版本,否则它将无法识别该模式

标签: file caching cakephp fopen


【解决方案1】:

只需将CHMOD776 对我很好)给app/tmp

【讨论】:

    【解决方案2】:

    对于出现相同错误/警告的 Windows 用户:确保在提升模式下运行命令提示符;)

    【讨论】:

      【解决方案3】:

      我遇到了类似的问题,这是因为我在 app/tmp 目录中设置了 chown -R www 以让 Cake“正确”运行,而无需授予每个人写入权限。看起来在开发过程中使用控制台和网络的唯一方法是给每个人写权限,或者将自己添加到 www 组。

      简单的解决方案:

      chmod -R 777 应用程序/tmp

      chown -R 用户名 app/tmp

      在使用控制台时和

      chown -R www app/tmp

      使用网络时

      【讨论】:

      • chmod 777 永远不是任何事情的答案,这是完全错误和不安全的!
      【解决方案4】:

      嗯,就我而言,当我检查我的应用程序时,它没有 /tmp 文件夹。然后我创建了结构(/tmp/cache/models/tmp/cache/persistent)并且一切正常。这发生在我身上可能是 git 忽略空文件夹,所以它们没有被创建。

      【讨论】:

      • 确实,版本控制系统通常会忽略空文件夹。
      猜你喜欢
      • 2014-08-03
      • 2016-11-28
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-24
      • 1970-01-01
      • 2013-04-15
      相关资源
      最近更新 更多