1

真的是 Zend 的新手,用了几天。

我收到一条致命错误消息:

致命错误:/home/[REDACTED]/library/Zend/Cache.php 中未捕获的异常 'Zend_Cache_Exception' 和消息 'cache_dir "/home/[REDACTED]/application/../data/tmp/" is not writable': 209
堆栈跟踪:
#0 /home/[已编辑]/library/Zend/Cache/Backend/File.php(181): Zend_Cache::throwException('cache_dir "/hom...')
#1 /home/[已编辑]/library/Zend/Cache/Backend/File.php(129): Zend_Cache_Backend_File->setCacheDir('/home/user/Proj...')
#2 /home/[已编辑]/library/Zend/Cache.php(153): Zend_Cache_Backend_File->__construct(Array)
#3 /home/[已编辑]/library/Zend/Cache.php(94): Zend_Cache::_makeBackend('File', Array, false, false)
#4 /home/[已编辑]/application/Bootstrap.php(42): Zend_Cache::factory('Core', 'File', Array, Array)
#5 /home/[已编辑]/library/Zend/Application/Bootstrap/BootstrapAbstract.php(669): Bootstrap->_initCache()
#6 /home/[已编辑]/library/Zend/Applica 在/home/[已编辑]/library/Zend/Cache.php 209 行

根据错误消息,我希望tmp目录上存在文件夹权限问题。但是,该目录是可写的:

用户@[REDATCED]:~/[REDATCED]/data$ ls -hal
总计 24K
drwxrwxr-x 6 用户用户 4,0K Jan 7 18:40 。
drwxr-xr-x 12 用户用户 4,0K 1 月 9 日 12:50 ..
drwxrwxr-x 3 用户用户 4,0K Dez 17 11:42 语言环境
drwxrwxr-x 2 用户用户 4,0K Dez 17 11:42 日志
drwxrwxr-x 2 用户用户 4,0K Dez 17 11:42 会话
drwxrwxr-x 2 用户用户 4,0K 1 月 7 日 18:40 tmp

解决方法是注释以下行application/Bootstrap.php

    受保护的函数_initCache() {
          $frontendOptions = 数组(
              'lifetime' => 7200, // 缓存生命周期为 2 小时
              '自动序列化' => 真
          );

          $backendOptions = 数组(
              'cache_dir' => APPLICATION_PATH 。'/../data/tmp/' // 所在目录
          );

          // 获取 Zend_Cache_Core 对象
          $this->cache = Zend_Cache::factory('Core', 'File',
            $前端选项,$后端选项);

          Zend_Registry::set('cache', $this->cache);

          Zend_Date::setOptions(array(
              '缓存' => $this->缓存
          ));

这个解决方法是由一位同事建议的,我不知道我在这里做什么,或者即使这段代码是 Zend 或我们代码库的一部分。我不喜欢丑陋的 hack,或者通过注释掉代码来“修复”东西,或者在不知道我在做什么或背后的原因的情况下做任何事情。

此外,代码似乎在我同事的机器上运行。每次我从存储库中提取他们的代码提交时,我都会得到一个未注释的副本。

我可能可以从存储库或类似的东西中排除该文件(我也是 git 新手),但我真的更喜欢:

  • 知道错误的原因
  • 了解解决方案
4

3 回答 3

5

此错误通常是由于权限而发生的。

为了解决这个问题,如果您使用 apache 作为您的 Web 服务器,请将所有权分配给 apache。

在我的 Fedora Core 机器上,我通过简单地发出以下命令解决了这个问题:

chown my_current_name:apache -R /var/www/project_name 
于 2014-08-28T17:54:52.310 回答
1

当我写这个问题时,我注意到我的错误,该tmp目录可以由我自己和同一组的其他用户写入,显然 Zend 将作为另一个用户访问这些文件。解决方案是chmod 777在文件夹上,使其可写。

于 2013-01-09T15:48:12.290 回答
1

有同样的问题,通过一个简单的步骤解决了。lib>Zend>Cache>Backend>File.php 找到这一行

protected $_options = array(
'cache_dir' => 'null',

删除报价并将其保留为

protected $_options = array(
'cache_dir' => null, 

它真的对我有用。

于 2015-12-22T06:51:20.297 回答