12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- <?php
- /**
- * @file
- * Simple database connection check that can be placed anywhere within a Drupal
- * installation. Does NOT need to be in the root where index.php resides!
- */
- /**
- * Locate the actual Drupal root. Based on drush_locate_root().
- */
- function locate_root() {
- $drupal_root = FALSE;
- $start_path = isset($_SERVER['PWD']) ? $_SERVER['PWD'] : '';
- if (empty($start_path)) {
- $start_path = getcwd();
- }
- foreach (array(TRUE, FALSE) as $follow_symlinks) {
- $path = $start_path;
- if ($follow_symlinks && is_link($path)) {
- $path = realpath($path);
- }
- // Check the start path.
- if (valid_root($path)) {
- $drupal_root = $path;
- break;
- }
- else {
- // Move up dir by dir and check each.
- while ($path = shift_path_up($path)) {
- if ($follow_symlinks && is_link($path)) {
- $path = realpath($path);
- }
- if (valid_root($path)) {
- $drupal_root = $path;
- break 2;
- }
- }
- }
- }
- return $drupal_root;
- }
- /**
- * Based on the DrupalBoot*::valid_root() from Drush.
- */
- function valid_root($path) {
- if (!empty($path) && is_dir($path) && file_exists($path . '/index.php')) {
- $candidate = 'includes/common.inc';
- if (file_exists($path . '/' . $candidate) && file_exists($path . '/misc/drupal.js')) {
- return TRUE;
- }
- }
- return FALSE;
- }
- /**
- * Based on _drush_shift_path_up().
- */
- function shift_path_up($path) {
- if (empty($path)) {
- return FALSE;
- }
- $path = explode('/', $path);
- // Move one directory up.
- array_pop($path);
- return implode('/', $path);
- }
- /**
- * Do the actual database connection check.
- */
- define('DRUPAL_ROOT', locate_root());
- require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
- drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE);
- $result = db_query('SELECT COUNT(filename) FROM {system}')->fetchField();
- if ($result) {
- $msg = 'OK';
- http_response_code(200);
- }
- else {
- http_response_code(500);
- $msg = 'NOK';
- }
- exit($msg);
|