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)