我有关于zend cache_dir的问题。 我尝试将我的网站从一台服务器转移到另一台服务器,它可以工作。 但是,当我尝试访问该网站时,它显示此错误:
PHP Fatal error: Uncaught exception 'Zend_Cache_Exception' with message 'cache_dir "/tmp" must be a directory' in /home/aiesorgm/public_html/gcpi/library/Zend/Cache.php:209
Stack trace:
- #0 /home/aiesorgm/public_html/gcpi/library/Zend/Cache/Backend/File.php(178): Zend_Cache::throwException('cache_dir "/tmp...')
- #1 /home/aiesorgm/public_html/gcpi/library/Zend/Cache/Backend/File.php(129): Zend_Cache_Backend_File->setCacheDir('/tmp')
- #2 /home/aiesorgm/public_html/gcpi/library/Zend/Cache.php(153): Zend_Cache_Backend_File->__construct(Array)
- #3 /home/aiesorgm/public_html/gcpi/library/Zend/Cache.php(94): Zend_Cache::_makeBackend('File', Array, false, false)
- #4 /home/aiesorgm/public_html/gcpi/application/Bootstrap.php(55): Zend_Cache::factory('Page', 'File', Array, Array)
- #5 /home/aiesorgm/public_html/gcpi/library/Zend/Application/Bootstrap/BootstrapAbstract.php(669): Bootstrap->_initCache()
- #6 /home/aiesorgm/public_html/gcpi/library/Zend/Application/Bootstrap/BootstrapAbstract.php(622): Zend_Application_Bootstrap_BootstrapAbstract-> in /home/aiesorgm/public_html/gcpi/library/Zend/Cache.php on line 209
我已经尝试了所有可以从stackoverflow获得的解决方案,但它仍然无效。 我还在公共文件夹中创建了tmp目录,并将权限更改为777。
应用/ bootstrap.php中
protected function _initCache() {
$info = Zend_Registry::get('info');
$backendOptions = array(
'cache_dir' => sys_get_temp_dir(),
'hashed_directory_level' => 1,
'file_name_prefix' => 'style',
'automatic_cleaning_factor' => 1
);
$frontendOptions = array(
'lifetime' => $info['cache']['lifetime'],
'automatic_serialization' => true,
'caching' => ($info['cache']['enabled'] == '1') ? true : false,
);
$cache = Zend_Cache::factory('Page', 'File', $frontendOptions, $backendOptions);
Zend_Registry::set('cache', $cache);
}
/library/Zend/Cache/Backend/File.php
protected $_options = array(
'cache_dir' => null,
'file_locking' => true,
'read_control' => true,
'read_control_type' => 'crc32',
'hashed_directory_level' => 0,
'hashed_directory_perm' => 0700,
'file_name_prefix' => 'zend_cache',
'cache_file_perm' => 0600,
'metadatas_array_max_size' => 100
);
文件夹结构
文档
文库
10Q你的阅读时间。
答案 0 :(得分:2)
/tmp
是完整路径,因此ZF不会尝试写入公用文件夹中名为tmp
的文件夹,它正在尝试写入文件根目录下的系统临时文件夹系统
我建议改为设置项目特定的缓存文件夹:
$backendOptions = array(
'cache_dir' => APPLICATION_PATH.'/../data/cache',
'hashed_directory_level' => 1,
'file_name_prefix' => 'style',
'automatic_cleaning_factor' => 1
);
然后在项目中创建一个名为data
的文件夹,并在其中创建一个cache
文件夹,并使其可写。