diff --git a/includes/bootstrap.inc b/includes/bootstrap.inc
index 3dc80262b8a1e426caa3303a982b271f193563da..18a370923f09232aa73e820ef76d347bde990901 100644
--- a/includes/bootstrap.inc
+++ b/includes/bootstrap.inc
@@ -431,7 +431,7 @@ function drupal_override_server_variables($variables = array()) {
     'REMOTE_ADDR' => '127.0.0.1',
     'REQUEST_METHOD' => 'GET',
     'SERVER_NAME' => NULL,
-    'SERVER_SOFTWARE' => 'PHP CLI',
+    'SERVER_SOFTWARE' => NULL,
     'HTTP_USER_AGENT' => NULL,
   );
   // Replace elements of the $_SERVER array, as appropriate.
@@ -787,7 +787,7 @@ function drupal_page_is_cacheable($allow_caching = NULL) {
   }
 
   return $allow_caching_static && ($_SERVER['REQUEST_METHOD'] == 'GET' || $_SERVER['REQUEST_METHOD'] == 'HEAD')
-    && $_SERVER['SERVER_SOFTWARE'] !== 'PHP CLI';
+    && !drupal_is_cli();
 }
 
 /**
@@ -1546,7 +1546,7 @@ function _drupal_bootstrap($phase) {
       require_once DRUPAL_ROOT . '/' . variable_get('lock_inc', 'includes/lock.inc');
       lock_initialize();
 
-      if ($_SERVER['SERVER_SOFTWARE'] !== 'PHP CLI') {
+      if (!drupal_is_cli()) {
         ob_start();
         drupal_page_header();
       }
@@ -1999,3 +1999,10 @@ function &drupal_static($name, $default_value = NULL, $reset = FALSE) {
 function drupal_static_reset($name = NULL) {
   drupal_static($name, NULL, TRUE);
 }
+
+/**
+ * Detect whether the current script is running in a command-line environment.
+ */
+function drupal_is_cli() {
+  return (!isset($_SERVER['SERVER_SOFTWARE']) && (php_sapi_name() == 'cli' || (is_numeric($_SERVER['argc']) && $_SERVER['argc'] > 0)));
+}
diff --git a/scripts/drupal.sh b/scripts/drupal.sh
index 477fc2c4b30637fa8e35f9be608877bbfc745012..9e743cf32eb16e4f5b6aaa912de4df0d56f83545 100755
--- a/scripts/drupal.sh
+++ b/scripts/drupal.sh
@@ -62,7 +62,7 @@
 $_SERVER['HTTP_HOST']       = 'default';
 $_SERVER['PHP_SELF']        = '/index.php';
 $_SERVER['REMOTE_ADDR']     = '127.0.0.1';
-$_SERVER['SERVER_SOFTWARE'] = 'PHP CLI';
+$_SERVER['SERVER_SOFTWARE'] = NULL;
 $_SERVER['REQUEST_METHOD']  = 'GET';
 $_SERVER['QUERY_STRING']    = '';
 $_SERVER['PHP_SELF']        = $_SERVER['REQUEST_URI'] = '/';
diff --git a/scripts/run-tests.sh b/scripts/run-tests.sh
index a5f8b67a83e7af8e98343cddc351e6c65850fd47..54f47bc53838ae18ba2683acbac8c254c0fbc81d 100755
--- a/scripts/run-tests.sh
+++ b/scripts/run-tests.sh
@@ -24,7 +24,7 @@
 }
 else {
   // Run administrative functions as CLI.
-  simpletest_script_init("PHP CLI");
+  simpletest_script_init(NULL);
 }
 
 // Bootstrap to perform initial validation or other operations.