我有使用CakePHP 2.5.dev
应用,我在CakePHP中通过
cache
Configure::write('debug', 2);
Configure::write("Cache.disable", true);
app/Config/core.php
中的
不幸的是,我必须将此应用程序部署到无法写入app/tmp
目录的服务器。
我检查了StackOverflow上的答案如何禁用缓存和上面的行到app/Config/core.php
甚至注释掉了负责缓存的休息行,即
/**
* Configure the cache used for general framework caching. Path information,
* object listings, and translation cache files are stored with this configuration.
*/
//Cache::config('_cake_core_', array(
// 'engine' => $engine,
// 'prefix' => $prefix . 'cake_core_',
// 'path' => CACHE . 'persistent' . DS,
// 'serialize' => ($engine === 'File'),
// 'duration' => $duration
//));
/**
* Configure the cache for model and datasource caches. This cache configuration
* is used to store schema descriptions, and table listings in connections.
*/
//Cache::config('_cake_model_', array(
// 'engine' => $engine,
// 'prefix' => $prefix . 'cake_model_',
// 'path' => CACHE . 'models' . DS,
// 'serialize' => ($engine === 'File'),
// 'duration' => $duration
//));
但是当我在生产服务器上运行我的应用程序时,我得到了一个例外。
Warning: /home/kowalski_m/public_html/projekt2/app/tmp/cache/persistent/ is not writable in /home/kowalski_m/public_html/projekt2/lib/Cake/Cache/Engine/FileEngine.php on line 384
Fatal error: Uncaught exception 'CacheException' with message 'Cache engine _cake_core_ is not properly configured.' in /home/kowalski_m/public_html/projekt2/lib/Cake/Cache/Cache.php:181 Stack trace: #0 /home/kowalski_m/public_html/projekt2/lib/Cake/Cache/Cache.php(151): Cache::_buildEngine('_cake_core_') #1 /home/kowalski_m/public_html/projekt2/app/Config/core.php(376): Cache::config('_cake_core_', Array) #2 /home/kowalski_m/public_html/projekt2/lib/Cake/Core/Configure.php(72): include('/home/kowalski_...') #3 /home/kowalski_m/public_html/projekt2/lib/Cake/bootstrap.php(175): Configure::bootstrap(true) #4 /home/kowalski_m/public_html/projekt2/app/webroot/index.php(94): include('/home/kowalski_...') #5 /home/kowalski_m/public_html/projekt2/index.php(41): require('/home/kowalski_...') #6 {main} thrown in /home/kowalski_m/public_html/projekt2/lib/Cake/Cache/Cache.php on line 181
所以看起来缓存仍在使用。
我无法在此服务器中获取此目录的写法律。我无法访问root。
如何禁用完全缓存并设置CakePHP以便不在/app/tmp
中写入任何内容?
答案 0 :(得分:1)
您的服务器上是否安装了APC?
如果是这样,那么您可以使用它来缓存核心。这比攻击文件系统要快。
您需要配置cake_core的那些线,只需确保设置
$engine = 'Apc';
高速缓存配置行。
如果在共享服务器上使用APC,正确设置前缀非常重要,我使用以下配置,该配置适用于安装了多个蛋糕应用的共享主机:
Cache::config(
'_cake_core_',
array(
'engine' => $engine,
'prefix' => $prefix . 'cake_core_' . Inflector::slug(ROOT),
'path' => CACHE . 'persistent' . DS,
'serialize' => ($engine === 'File'),
'duration' => $duration
)
);
<强>可替换地:强>
您不需要root权限来设置该文件夹的权限,您只需要FTP访问权限。你可以使用FTP将app / tmp / *的权限设置为777,这就是我对其他一些临时文件夹的使用。