Zend Cache异常:'cache_dir"/home/(...)/application/../data/tmp/"不可写'

Tha*_*Guy 1 php zend-framework

真的很新的Zend,使用几天.

我收到致命的错误消息:

Fatal error:  Uncaught exception 'Zend_Cache_Exception' with message 'cache_dir "/home/[REDACTED]/application/../data/tmp/" is not writable' in /home/[REDACTED]/library/Zend/Cache.php:209
Stack trace:
#0 /home/[REDACTED]/library/Zend/Cache/Backend/File.php(181): Zend_Cache::throwException('cache_dir "/hom...')
#1 /home/[REDACTED]/library/Zend/Cache/Backend/File.php(129): Zend_Cache_Backend_File->setCacheDir('/home/user/Proj...')
#2 /home/[REDACTED]/library/Zend/Cache.php(153): Zend_Cache_Backend_File->__construct(Array)
#3 /home/[REDACTED]/library/Zend/Cache.php(94): Zend_Cache::_makeBackend('File', Array, false, false)
#4 /home/[REDACTED]/application/Bootstrap.php(42): Zend_Cache::factory('Core', 'File', Array, Array)
#5 /home/[REDACTED]/library/Zend/Application/Bootstrap/BootstrapAbstract.php(669): Bootstrap->_initCache()
#6 /home/[REDACTED]/library/Zend/Applica in /home/[REDACTED]/library/Zend/Cache.php on line 209

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

user@[REDATCED]:~/[REDATCED]/data$ ls -hal
total 24K
drwxrwxr-x  6 user user 4,0K Jan  7 18:40 .
drwxr-xr-x 12 user user 4,0K Jan  9 12:50 ..
drwxrwxr-x  3 user user 4,0K Dez 17 11:42 locales
drwxrwxr-x  2 user user 4,0K Dez 17 11:42 logs
drwxrwxr-x  2 user user 4,0K Dez 17 11:42 sessions
drwxrwxr-x  2 user user 4,0K Jan  7 18:40 tmp

解决方法是评论以下几行application/Bootstrap.php:

    protected function _initCache() {
          $frontendOptions = array(
              'lifetime' => 7200, // cache lifetime of 2 hours
              'automatic_serialization' => true
          );

          $backendOptions = array(
              'cache_dir' => APPLICATION_PATH . '/../data/tmp/' // Directory where
          );

          // getting a Zend_Cache_Core object
          $this->cache = Zend_Cache::factory('Core', 'File',
            $frontendOptions, $backendOptions);

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

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

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

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

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

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

小智 5

由于权限,通常会发生此错误.

要解决此问题,如果您使用apache作为Web服务器,请将所有权分配给apache.

在我的Fedora Core机器上,我通过简单地发出:

chown my_current_name:apache -R /var/www/project_name 
Run Code Online (Sandbox Code Playgroud)