function system_requirements in Drupal 5
Same name and namespace in other branches
- 8 core/modules/system/system.install \system_requirements()
- 6 modules/system/system.install \system_requirements()
- 7 modules/system/system.install \system_requirements()
- 9 core/modules/system/system.install \system_requirements()
- 10 core/modules/system/system.install \system_requirements()
Test and report Drupal installation requirements.
File
- modules/
system/ system.install, line 10
Code
function system_requirements($phase) {
$requirements = array();
// Ensure translations don't break at install time
$t = get_t();
// Report Drupal version
if ($phase == 'runtime') {
$requirements['drupal'] = array(
'title' => $t('Drupal'),
'value' => VERSION,
'severity' => REQUIREMENT_INFO,
'weight' => -10,
);
}
// Web server information.
$software = $_SERVER['SERVER_SOFTWARE'];
$requirements['webserver'] = array(
'title' => $t('Web server'),
'value' => $software,
);
// Test PHP version
$requirements['php'] = array(
'title' => $t('PHP'),
'value' => $phase == 'runtime' ? l(phpversion(), 'admin/logs/status/php') : phpversion(),
);
if (version_compare(phpversion(), DRUPAL_MINIMUM_PHP) < 0) {
$requirements['php']['description'] = $t('Your PHP installation is too old. Drupal requires at least PHP %version.', array(
'%version' => DRUPAL_MINIMUM_PHP,
));
$requirements['php']['severity'] = REQUIREMENT_ERROR;
}
// Test PHP register_globals setting.
$requirements['php_register_globals'] = array(
'title' => $t('PHP register globals'),
);
$register_globals = trim(ini_get('register_globals'));
// Unfortunately, ini_get() may return many different values, and we can't
// be certain which values mean 'on', so we instead check for 'not off'
// since we never want to tell the user that their site is secure
// (register_globals off), when it is in fact on. We can only guarantee
// register_globals is off if the value returned is 'off', '', or 0.
if (!empty($register_globals) && strtolower($register_globals) != 'off') {
$requirements['php_register_globals']['description'] = $t('<em>register_globals</em> is enabled. Drupal requires this configuration directive to be disabled. Your site may not be secure when <em>register_globals</em> is enabled. The PHP manual has instructions for <a href="http://php.net/configuration.changes">how to change configuration settings</a>.');
$requirements['php_register_globals']['severity'] = REQUIREMENT_ERROR;
$requirements['php_register_globals']['value'] = $t("Enabled ('@value')", array(
'@value' => $register_globals,
));
}
else {
$requirements['php_register_globals']['value'] = $t('Disabled');
}
// Test DB version
global $db_type;
if (function_exists('db_status_report')) {
$requirements += db_status_report($phase);
}
// Test settings.php file writability
if ($phase == 'runtime') {
if (!drupal_verify_install_file(conf_path() . '/settings.php', FILE_EXIST | FILE_READABLE | FILE_NOT_WRITABLE)) {
$requirements['settings.php'] = array(
'value' => $t('Not protected'),
'severity' => REQUIREMENT_ERROR,
'description' => $t('The file %file is not protected from modifications and poses a security risk. You must change the file\'s permissions to be non-writable.', array(
'%file' => conf_path() . '/settings.php',
)),
);
}
else {
$requirements['settings.php'] = array(
'value' => $t('Protected'),
);
}
$requirements['settings.php']['title'] = $t('Configuration file');
}
// Report cron status
if ($phase == 'runtime') {
$cron_last = variable_get('cron_last', NULL);
if (is_numeric($cron_last)) {
$requirements['cron']['value'] = $t('Last run !time ago', array(
'!time' => format_interval(time() - $cron_last),
));
}
else {
$requirements['cron'] = array(
'description' => $t('Cron has not run. It appears cron jobs have not been setup on your system. Please check the help pages for <a href="@url">configuring cron jobs</a>.', array(
'@url' => 'http://drupal.org/cron',
)),
'severity' => REQUIREMENT_ERROR,
'value' => $t('Never run'),
);
}
$requirements['cron']['description'] .= ' ' . t('You can <a href="@cron">run cron manually</a>.', array(
'@cron' => url('admin/logs/status/run-cron'),
));
$requirements['cron']['title'] = $t('Cron maintenance tasks');
}
// Test files directory
if ($phase == 'runtime') {
$directory = file_directory_path();
$is_writable = is_writable($directory);
$is_directory = is_dir($directory);
if (!$is_writable || !$is_directory) {
if (!$is_directory) {
$error = $t('The directory %directory does not exist.', array(
'%directory' => $directory,
));
}
else {
$error = $t('The directory %directory is not writable.', array(
'%directory' => $directory,
));
}
$requirements['file system'] = array(
'value' => $t('Not writable'),
'severity' => REQUIREMENT_ERROR,
'description' => $error . ' ' . $t('You may need to set the correct directory at the <a href="@admin-file-system">file system settings page</a> or change the current directory\'s permissions so that it is writable.', array(
'@admin-file-system' => url('admin/settings/file-system'),
)),
);
}
else {
if (variable_get('file_downloads', FILE_DOWNLOADS_PUBLIC) == FILE_DOWNLOADS_PUBLIC) {
$requirements['file system'] = array(
'value' => $t('Writable (<em>public</em> download method)'),
);
}
else {
$requirements['file system'] = array(
'value' => $t('Writable (<em>private</em> download method)'),
);
}
}
$requirements['file system']['title'] = $t('File system');
}
// See if updates are available in update.php.
if ($phase == 'runtime') {
$requirements['update'] = array(
'title' => $t('Database schema'),
'severity' => REQUIREMENT_OK,
'value' => $t('Up to date'),
);
// Check installed modules.
foreach (module_list() as $module) {
$updates = drupal_get_schema_versions($module);
if ($updates !== FALSE) {
$default = drupal_get_installed_schema_version($module);
if (max($updates) > $default) {
$requirements['update']['severity'] = REQUIREMENT_ERROR;
$requirements['update']['value'] = $t('Out of date');
$requirements['update']['description'] = $t('Some modules have database schema updates to install. You should run the <a href="@update">database update script</a> immediately.', array(
'@update' => base_path() . 'update.php',
));
break;
}
}
}
}
// Test Unicode library
include_once './includes/unicode.inc';
$requirements = array_merge($requirements, unicode_requirements());
return $requirements;
}