Rev 831 | Blame | Last modification | View Log | RSS feed
<?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 underGeneral Settings.";$solution_2 = "Change the Cache Directory setting under GeneralSettings or give your webserver more permissionsfor 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 cachedirectory \"".htmlspecialchars($dir)."\" onyour 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 filesto 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 createdfile could not be read by the webserver. This is probablycaused 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 directoriesin 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 youexperience problems with your Phorum installation,it might me because of this.","As a work around, you can disable the caching facilitiesin the admin interface. Please contact the Phorumdevelopers to find out what the problem is.",);return array (PHORUM_SANITY_OK, NULL);}?>