A patch to keep cache directory out of webroot
Alla Bezroutchko <[email protected]> Fri, 01 Oct 2004 17:56:05 +0200
| Newsgroups | gmane.comp.cms.xaraya.patches |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format.
--------------090508050006000105080904
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Hello MrB or whoever is reading this,
Here is a patch that allows a configurable location of cache directory,
so it may be kept out of web root. As far as I can see it does not break
anything, but I only tested my setup, so more testing is necessary I guess.
I create a new system config variable and then use it everywhere where
the path to cache is needed.
The patch is made against xaraya-0.9.10-full.
Alla.
--------------090508050006000105080904
Content-Type: text/plain;
name="patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="patch"
diff -Nur /home/alla/xaraya-0.9.10/html/includes/caching/page.php html/includes/caching/page.php
--- /home/alla/xaraya-0.9.10/html/includes/caching/page.php Thu Sep 2 22:05:09 2004
+++ html/includes/caching/page.php Fri Oct 1 17:34:24 2004
@@ -229,6 +229,8 @@
*/
function xarPage_autoCacheLogStatus($status = 'MISS')
{
+
+ $varCacheDir = = xarCore_getSystemVar('CacheDir');
if (!empty($_SERVER['REQUEST_METHOD']) &&
$_SERVER['REQUEST_METHOD'] == 'GET' &&
// the URL is one of the candidates for session-less caching
@@ -245,20 +247,20 @@
global $xarPage_autoCachePeriod;
if (!empty($xarPage_autoCachePeriod) &&
- filemtime('var/cache/output/autocache.start') < time() - $xarPage_autoCachePeriod) {
- @touch('var/cache/output/autocache.start');
+ filemtime($varCacheDir . '/output/autocache.start') < time() - $xarPage_autoCachePeriod) {
+ @touch($varCacheDir . '/output/autocache.start');
// re-calculate Page.SessionLess based on autocache.log and save in config.caching.php
- $cachingConfigFile = 'var/cache/config.caching.php';
+ $cachingConfigFile = $varCacheDir . '/config.caching.php';
if (file_exists($cachingConfigFile) &&
is_writable($cachingConfigFile)) {
include $cachingConfigFile;
if (!empty($cachingConfiguration['AutoCache.MaxPages']) &&
- file_exists('var/cache/output/autocache.log') &&
- filesize('var/cache/output/autocache.log') > 0) {
+ file_exists($varCacheDir . '/output/autocache.log') &&
+ filesize($varCacheDir . '/output/autocache.log') > 0) {
- $logs = @file('var/cache/output/autocache.log');
+ $logs = @file($varCacheDir . '/output/autocache.log');
$autocacheproposed = array();
foreach ($logs as $entry) {
if (empty($entry)) continue;
@@ -312,9 +314,9 @@
}
}
- $fp = @fopen('var/cache/output/autocache.log', 'w');
+ $fp = @fopen($varCacheDir . '/output/autocache.log', 'w');
} else {
- $fp = @fopen('var/cache/output/autocache.log', 'a');
+ $fp = @fopen($varCacheDir . '/output/autocache.log', 'a');
}
if ($fp) {
@fwrite($fp, "$time $status $addr $url\n");
diff -Nur /home/alla/xaraya-0.9.10/html/includes/xarCache.php html/includes/xarCache.php
--- /home/alla/xaraya-0.9.10/html/includes/xarCache.php Thu Sep 2 22:05:08 2004
+++ html/includes/xarCache.php Fri Oct 1 17:39:11 2004
@@ -35,7 +35,9 @@
global $xarBlock_cacheTime;
global $xarPage_autoCachePeriod;
- if (!@include_once('var/cache/config.caching.php')) {
+ $varCacheDir = xarCore_getSystemVar('CacheDir');
+
+ if (!@include_once($varCacheDir . '/config.caching.php')) {
// if the config file is missing, turn caching off
@unlink($cacheDir . '/cache.touch');
return FALSE;
@@ -98,7 +100,7 @@
xarPage_httpCacheHeaders($cache_file);
- if (file_exists('var/cache/output/autocache.start')) {
+ if (file_exists($varCacheDir . '/output/autocache.start')) {
xarPage_autoCacheLogStatus('HIT');
}
diff -Nur /home/alla/xaraya-0.9.10/html/includes/xarTemplate.php html/includes/xarTemplate.php
--- /home/alla/xaraya-0.9.10/html/includes/xarTemplate.php Thu Sep 2 22:05:08 2004
+++ html/includes/xarTemplate.php Fri Oct 1 16:56:52 2004
@@ -53,7 +53,7 @@
*
*/
// Let's do this once here, not scattered all over the place
-define('XAR_TPL_CACHE_DIR',xarCoreGetVarDirPath() . '/cache/templates');
+define('XAR_TPL_CACHE_DIR', xarCore_getSystemVar('CacheDir') . '/templates');
/**
* Initializes the BlockLayout Template Engine
diff -Nur /home/alla/xaraya-0.9.10/html/index.php html/index.php
--- /home/alla/xaraya-0.9.10/html/index.php Thu Sep 2 22:05:07 2004
+++ html/index.php Fri Oct 1 17:41:46 2004
@@ -13,22 +13,32 @@
*/
/**
+ * Load the Xaraya core
+ */
+
+/* Doing this before xarCache_init to have cache dir
+ * configured via system config
+ * This does not seem to break anything in my install
+*/
+
+include 'includes/xarCore.php';
+
+
+/**
* Set up output caching if enabled
*/
-if (file_exists('var/cache/output/cache.touch')) {
+
+
+$varCacheDir = xarCore_getSystemVar('CacheDir');
+if (file_exists($varCacheDir . '/output/cache.touch')) {
include_once('includes/xarCache.php');
// Note : we may already exit here if session-less page caching is enabled
- if (xarCache_init(array('cacheDir' => 'var/cache/output'))) {
+ if (xarCache_init(array('cacheDir' => $varCacheDir . '/output'))) {
define('XARCACHE_IS_ENABLED',1);
}
}
/**
- * Load the Xaraya core
- */
-include 'includes/xarCore.php';
-
-/**
* Main Xaraya Entry
*
* @access public
Binary files /home/alla/xaraya-0.9.10/html/modules/xarcachemanager/xaradmin/.updateconfig.php.swp and html/modules/xarcachemanager/xaradmin/.updateconfig.php.swp differ
diff -Nur /home/alla/xaraya-0.9.10/html/modules/xarcachemanager/xaradmin/modifyconfig.php html/modules/xarcachemanager/xaradmin/modifyconfig.php
--- /home/alla/xaraya-0.9.10/html/modules/xarcachemanager/xaradmin/modifyconfig.php Thu Sep 2 21:55:41 2004
+++ html/modules/xarcachemanager/xaradmin/modifyconfig.php Fri Oct 1 17:12:40 2004
@@ -17,7 +17,7 @@
$data = array();
- $varCacheDir = xarCoreGetVarDirPath() . '/cache';
+ $varCacheDir = xarCore_getSystemVar('CacheDir');
if (file_exists($varCacheDir . '/output/cache.touch')) {
$data['CachingEnabled'] = 1;
diff -Nur /home/alla/xaraya-0.9.10/html/modules/xarcachemanager/xaradmin/pages.php html/modules/xarcachemanager/xaradmin/pages.php
--- /home/alla/xaraya-0.9.10/html/modules/xarcachemanager/xaradmin/pages.php Thu Sep 2 21:55:41 2004
+++ html/modules/xarcachemanager/xaradmin/pages.php Fri Oct 1 17:13:06 2004
@@ -11,7 +11,7 @@
$data = array();
- $varCacheDir = xarCoreGetVarDirPath() . '/cache';
+ $varCacheDir = xarCore_getSystemVar('CacheDir');
if (file_exists($varCacheDir . '/output/cache.pagelevel')) {
$iscached = 1;
} else {
diff -Nur /home/alla/xaraya-0.9.10/html/modules/xarcachemanager/xaradmin/updateconfig.php html/modules/xarcachemanager/xaradmin/updateconfig.php
--- /home/alla/xaraya-0.9.10/html/modules/xarcachemanager/xaradmin/updateconfig.php Thu Sep 2 21:55:41 2004
+++ html/modules/xarcachemanager/xaradmin/updateconfig.php Fri Oct 1 17:46:15 2004
@@ -23,7 +23,7 @@
if (!xarSecurityCheck('AdminXarCache')) return;
// set the cache dir
- $varCacheDir = xarCoreGetVarDirPath() . '/cache';
+ $varCacheDir = xarCore_getSystemVar('CacheDir');
$outputCacheDir = $varCacheDir . '/output';
// turn output caching system on or off
diff -Nur /home/alla/xaraya-0.9.10/html/modules/xarcachemanager/xaradminapi/getmenulinks.php html/modules/xarcachemanager/xaradminapi/getmenulinks.php
--- /home/alla/xaraya-0.9.10/html/modules/xarcachemanager/xaradminapi/getmenulinks.php Thu Sep 2 21:55:41 2004
+++ html/modules/xarcachemanager/xaradminapi/getmenulinks.php Fri Oct 1 17:15:38 2004
@@ -22,7 +22,7 @@
'flushcache'),
'title' => xarML('Flush the output cache of xarCache'),
'label' => xarML('Flush Cache'));
- $varCacheDir = xarCoreGetVarDirPath() . '/cache';
+ $varCacheDir = xarCore_getSystemVar('CacheDir');
if (file_exists($varCacheDir . '/output/cache.pagelevel')) {
$menulinks[] = Array('url' => xarModURL('xarcachemanager',
'admin',
diff -Nur /home/alla/xaraya-0.9.10/html/modules/xarcachemanager/xareventapi.php html/modules/xarcachemanager/xareventapi.php
--- /home/alla/xaraya-0.9.10/html/modules/xarcachemanager/xareventapi.php Thu Sep 2 21:55:41 2004
+++ html/modules/xarcachemanager/xareventapi.php Fri Oct 1 17:35:15 2004
@@ -11,8 +11,9 @@
*/
// Only define this event handler if auto-caching is enabled
+$varCacheDir = xarCore_getSystemVar('CacheDir');
if (defined('XARCACHE_IS_ENABLED') &&
- file_exists('var/cache/output/autocache.start')) {
+ file_exists($varCacheDir . '/output/autocache.start')) {
/**
* Log the URL requested by this first-time visitor
* @return Boolean
diff -Nur /home/alla/xaraya-0.9.10/html/modules/xarcachemanager/xarinit.php html/modules/xarcachemanager/xarinit.php
--- /home/alla/xaraya-0.9.10/html/modules/xarcachemanager/xarinit.php Thu Sep 2 21:55:41 2004
+++ html/modules/xarcachemanager/xarinit.php Fri Oct 1 17:18:16 2004
@@ -18,7 +18,7 @@
function xarcachemanager_init()
{
// set up the output cache directory
- $varCacheDir = xarCoreGetVarDirPath() . '/cache';
+ $varCacheDir = xarCore_getSystemVar('CacheDir');
if (is_writable($varCacheDir) || is_dir($varCacheDir.'/output')) {
if (!is_dir($varCacheDir.'/output')) {
@@ -240,7 +240,7 @@
*/
function xarcachemanager_upgrade($oldversion)
{
- $varCacheDir = xarCoreGetVarDirPath() . '/cache';
+ $varCacheDir = xarCore_getSystemVar('CacheDir');
$defaultConfigFile = 'modules/xarcachemanager/config.caching.php.dist';
$cachingConfigFile = $varCacheDir . '/config.caching.php';
@@ -504,7 +504,7 @@
function xarcachemanager_delete()
{
//if still there, remove the cache.touch file, this turns everything off
- $varCacheDir = xarCoreGetVarDirPath() . '/cache';
+ $varCacheDir = xarCore_getSystemVar('CacheDir');
if (file_exists($varCacheDir . '/output') && is_dir($varCacheDir . '/output')) {
if (file_exists($varCacheDir . '/output/cache.touch')) {
@unlink($varCacheDir . '/output/cache.touch');
diff -Nur /home/alla/xaraya-0.9.10/html/upgrade.php html/upgrade.php
--- /home/alla/xaraya-0.9.10/html/upgrade.php Thu Sep 2 22:05:08 2004
+++ html/upgrade.php Fri Oct 1 17:22:13 2004
@@ -1234,7 +1234,7 @@
// If output caching if enabled, check to see if the table xar_cache_blocks exists.
// If it does not exist, disable output caching so that xarcachemanager can be upgraded.
echo "<h5>Checking xarCache State</h5>";
- $varCacheDir = xarCoreGetVarDirPath() . '/cache';
+ $varCacheDir = xarCore_getSystemVar('CacheDir');
if (file_exists($varCacheDir . '/output/cache.touch')) {
echo "Output caching enabled, checking for required table...<br/>";
$dbconn =& xarDBGetConn();
diff -Nur /home/alla/xaraya-0.9.10/html/var/config.system.php html/var/config.system.php
--- /home/alla/xaraya-0.9.10/html/var/config.system.php Thu Sep 2 22:05:25 2004
+++ html/var/config.system.php Fri Oct 1 16:54:15 2004
@@ -1,7 +1,7 @@
<?php
// Database Configuration
// Database Username: the username that will be used to connect to the database.
-$systemConfiguration['DB.UserName'] = '';
+$systemConfiguration['DB.UserName'] = 'root';
// Database Password: the password that will be used to connect to the database.
$systemConfiguration['DB.Password'] = '';
// Database Host: the host name where the database server is located.
@@ -50,6 +50,16 @@
*/
$systemConfiguration['DB.UseADODBCache'] = false;
+/*
+ * This value tells the system where the cache directory is located
+ * Thus it is possible to keep the writable cache directory
+ * outside of web root. It is particularly useful on Windows/IIS
+ * where a writable directory means an ability to upload files
+ * It can be set to var/cache to have the cache in its normal place
+*/
+
+$systemConfiguration['CacheDir'] = '/var/www/cache';
+
/*
* This value is used to change the default behavior of the
--------------090508050006000105080904
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
Xaraya_patches mailing list
[email protected]
http://xaraya.com/mailman/listinfo/xaraya_patches
--------------090508050006000105080904--