我非常对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的新手),但我真的更喜欢:
答案 0 :(得分:5)
由于权限,通常会发生此错误。
要解决此问题,如果您使用apache作为Web服务器,请将所有权分配给apache。
在我的Fedora Core机器上,我通过简单地发出:
来解决这个问题chown my_current_name:apache -R /var/www/project_name
答案 1 :(得分:1)
当我写这个问题时,我注意到了我的错误,tmp
目录可由我自己和同一组的其他用户写入,显然Zend将以另一个用户的身份访问这些文件。解决方案是在文件夹上chmod 777
,使其可写。
答案 2 :(得分:1)
有同样的问题,通过一个简单的步骤解决了它。 LIB> Zend的>高速缓存>后端> File.php 找到这一行
protected $_options = array(
'cache_dir' => 'null',
删除引号并将其保留为
protected $_options = array(
'cache_dir' => null,
这对我有用。