Subversion Repositories Applications.papyrus

Compare Revisions

Ignore whitespace Rev 830 → Rev 831

/trunk/client/phorum/bibliotheque/phorum/include/admin/sanity_checks/cache.php
New file
0,0 → 1,103
<?php
 
////////////////////////////////////////////////////////////////////////////////
// //
// Copyright (C) 2006 Phorum Development Team //
// http://www.phorum.org //
// //
// This program is free software. You can redistribute it and/or modify //
// it under the terms of either the current Phorum License (viewable at //
// phorum.org) or the Phorum License that was distributed with this file //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY, without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. //
// //
// You should have received a copy of the Phorum License //
// along with this program. //
////////////////////////////////////////////////////////////////////////////////
 
// Check if the cache directory is available and if
// files and directories can be created in it. Also
// do a basic check on Phorums caching API.
 
$phorum_check = "Phorum cache";
 
function phorum_check_cache(){
$PHORUM = $GLOBALS["PHORUM"];
$dir = $PHORUM["cache"];
 
// Some general solution descriptions.
$solution_1 = "Change the Cache Directory setting under
General Settings.";
$solution_2 = "Change the Cache Directory setting under General
Settings or give your webserver more permissions
for the current cache directory.";
 
// Check if the cache directory exists.
if (! file_exists($dir) || ! is_dir($dir)) return array(
PHORUM_SANITY_CRIT,
"The system is unable to find the cache
directory \"".htmlspecialchars($dir)."\" on
your system.",
$solution_1
);
 
// Check if we can create files in the cache directory.
$fp = @fopen ("$dir/sanity_check_dummy_file", "w");
if (! $fp) return array (
PHORUM_SANITY_CRIT,
"The system is unable to write files
to your cache directory \"".htmlspecialchars($dir)."\".
The system error was:<br/><br/>".
htmlspecialchars($php_errormsg).".",
$solution_2
);
fclose($fp);
 
// Some very unusual thing might happen. On Windows2000 we have seen
// that the webserver can write a message to the cache directory,
// but that it cannot read it afterwards. Probably due to
// specific NTFS file permission settings. So here we have to make
// sure that we can open the file that we just wrote.
$checkfp = fopen("$dir/sanity_check_dummy_file", "r");
if (! $checkfp) return array(
PHORUM_SANITY_CRIT,
"The system was able to write a file to your cache directory
\"".htmlspecialchars($dir)."\", but afterwards the created
file could not be read by the webserver. This is probably
caused by the file permissions on your cache directory.",
$solution_2
);
 
unlink("$dir/sanity_check_dummy_file");
 
// Check if we can create directories in the cache directory.
if (! @mkdir("$dir/sanity_check_dummy_dir")) return array(
PHORUM_SANITY_CRIT,
"The system is unable to create directories
in your cache directory \"".htmlspecialchars($dir)."\".
The system error was:<br/><br/>".htmlspecialchars($php_errormsg).".",
$solution_2
);
rmdir("$dir/sanity_check_dummy_dir");
 
// All seems OK. Do a final system check where we check
// the caching system like the Phorum system will do.
phorum_cache_put('sanity_checks', 'dummy', 'dummy');
$entry = phorum_cache_get('sanity_checks', 'dummy');
phorum_cache_remove('sanity_checks', 'dummy');
if ($entry != 'dummy') return array(
PHORUM_SANITY_WARN,
"There might be a problem in Phorum's caching system.
Storing and retrieving a dummy key failed. If you
experience problems with your Phorum installation,
it might me because of this.",
"As a work around, you can disable the caching facilities
in the admin interface. Please contact the Phorum
developers to find out what the problem is.",
);
 
return array (PHORUM_SANITY_OK, NULL);
}
?>