如何在CakePHP中完全禁用Cache并且不向/ app / tmp写入任何内容?

时间:2014-02-17 21:22:13

标签: php cakephp caching disable-caching

我有使用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

enter image description here

所以看起来缓存仍在使用。

我无法在此服务器中获取此目录的写法律。我无法访问root。

如何禁用完全缓存并设置CakePHP以便不在/app/tmp中写入任何内容?

1 个答案:

答案 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,这就是我对其他一些临时文件夹的使用。