diff --git a/includes/database.mysql.inc b/includes/database.mysql.inc
index 7b307a3c5f5c31bc52538a51cde9e9e53c52deba..8f96dc3bb444805fad545966ce95114049d4acd0 100644
--- a/includes/database.mysql.inc
+++ b/includes/database.mysql.inc
@@ -21,6 +21,15 @@
  * (e.g. your database and web server live on different machines).
  */
 function db_connect($url) {
+  // Check if MySQL support is present in PHP
+  if (!function_exists('mysql_connect')) {
+    drupal_maintenance_theme();
+    drupal_set_title('PHP MySQL support not enabled');
+    print theme('maintenance_page', '<p>We were unable to use the MySQL database because the MySQL extension for PHP is not installed. Check your <code>PHP.ini</code> to see how you can enable it.</p>
+<p>For more help, see the <a href="http://drupal.org/node/258">Installation and upgrading handbook</a>. If you are unsure what these terms mean you should probably contact your hosting provider.</p>');
+    exit;
+  }
+
   $url = parse_url($url);
 
   // Allow for non-standard MySQL port.
diff --git a/includes/database.mysqli.inc b/includes/database.mysqli.inc
index 779a4a909d92184886b93caa6d2eff68d2b4bde6..f96f8965983af0d5539e97614fdd5bcd80b24dc3 100644
--- a/includes/database.mysqli.inc
+++ b/includes/database.mysqli.inc
@@ -21,6 +21,15 @@
  * Note that mysqli does not support persistent connections.
  */
 function db_connect($url) {
+  // Check if MySQLi support is present in PHP
+  if (!function_exists('mysqli_init')) {
+    drupal_maintenance_theme();
+    drupal_set_title('PHP MySQL support not enabled');
+    print theme('maintenance_page', '<p>We were unable to use the MySQL database because the MySQLi extension for PHP is not installed. Check your <code>PHP.ini</code> to see how you can enable it.</p>
+<p>For more help, see the <a href="http://drupal.org/node/258">Installation and upgrading handbook</a>. If you are unsure what these terms mean you should probably contact your hosting provider.</p>');
+    exit;
+  }
+
   $url = parse_url($url);
 
   // Allow for non-standard MySQL port.
diff --git a/includes/database.pgsql.inc b/includes/database.pgsql.inc
index 4cfa74f829cda6a4a547c475b407c28f83fdda1b..89b693bab191c305400ada434238e6a5d4979e96 100644
--- a/includes/database.pgsql.inc
+++ b/includes/database.pgsql.inc
@@ -21,6 +21,15 @@
  * (e.g. your database and web server live on different machines).
  */
 function db_connect($url) {
+   // Check if MySQL support is present in PHP
+  if (!function_exists('pg_connect')) {
+    drupal_maintenance_theme();
+    drupal_set_title('PHP PostgreSQL support not enabled');
+    print theme('maintenance_page', '<p>We were unable to use the PostgreSQL database because the PostgreSQL extension for PHP is not installed. Check your <code>PHP.ini</code> to see how you can enable it.</p>
+<p>For more help, see the <a href="http://drupal.org/node/258">Installation and upgrading handbook</a>. If you are unsure what these terms mean you should probably contact your hosting provider.</p>');
+    exit;
+  }
+
   $url = parse_url($url);
 
   $conn_string = ' user='. $url['user'] .' dbname='. substr($url['path'], 1) .' password='. $url['pass'] . ' host=' . $url['host'];