diff --git a/apachesolr.admin.inc b/apachesolr.admin.inc
index 979636a..29a2c7e 100644
--- a/apachesolr.admin.inc
+++ b/apachesolr.admin.inc
@@ -226,7 +226,7 @@ function apachesolr_environment_edit_validate($form, &$form_state) {
 function apachesolr_environment_edit_submit($form, &$form_state) {
   apachesolr_environment_save($form_state['values']);
   if (!empty($form_state['values']['make_default'])) {
-    variable_set('apachesolr_default_environment', $form_state['values']['env_id']);
+    apachesolr_set_default_environment($form_state['values']['env_id']);
   }
   cache_clear_all('apachesolr:environments', 'cache_apachesolr');
   drupal_set_message(t('The %name search environment has been saved.', array('%name' => $form_state['values']['name'])));
diff --git a/apachesolr.api.php b/apachesolr.api.php
index b9f1018..6f68036 100644
--- a/apachesolr.api.php
+++ b/apachesolr.api.php
@@ -1,9 +1,19 @@
 <?php
 /**
  * @file
- *   Exposed Hooks in 7.x:
+ *   Exposed Hooks in 6.x-3.x:
  */
 
+/**
+ * Lets modules know when the default environment is changed.
+ */
+function hook_apachesolr_default_environment($env_id, $old_env_id) {
+  $page = apachesolr_search_page_load('core_search');
+  if ($page && $page['env_id'] != $env_id) {
+    $page['env_id'] = $env_id;
+    apachesolr_search_page_save($page);
+  }
+}
 
 /**
  * Add index mappings for Field API types. The default mappings array
diff --git a/apachesolr.module b/apachesolr.module
index 42ca1df..0225e82 100644
--- a/apachesolr.module
+++ b/apachesolr.module
@@ -1064,6 +1064,15 @@ function apachesolr_default_environment($env_id = NULL) {
 }
 
 /**
+ * Set the default environment and let other modules know about the change.
+ */
+function apachesolr_set_default_environment($env_id) {
+  $old_env_id = variable_get('apachesolr_default_environment', 'solr');
+  variable_set('apachesolr_default_environment', $env_id);
+  module_invoke_all('apachesolr_default_environment', $env_id, $old_env_id);
+}
+
+/**
  * Factory method for solr singleton objects. Structure allows for an arbitrary
  * number of solr objects to be used based on a name whie maps to
  * the host, port, path combination.
diff --git a/apachesolr_search.module b/apachesolr_search.module
index a7ce4da..58328ea 100644
--- a/apachesolr_search.module
+++ b/apachesolr_search.module
@@ -323,6 +323,19 @@ function apachesolr_search_default_search_page($page_id = NULL, $reset = FALSE)
 }
 
 /**
+ * Implements hook_apachesolr_default_environment()
+ *
+ * Make sure the core search page is using the default environment.
+ */
+function apachesolr_search_apachesolr_default_environment($env_id, $old_env_id) {
+  $page = apachesolr_search_page_load('core_search');
+  if ($page && $page['env_id'] != $env_id) {
+    $page['env_id'] = $env_id;
+    apachesolr_search_page_save($page);
+  }
+}
+
+/**
  * Load a search page
  * @param string $page_id
  * @return array
@@ -513,6 +526,12 @@ function apachesolr_search_load_all_search_pages() {
 
     $search_pages = $search_pages + $search_pages_db;
 
+    // Ensure that the core search page uses the default environment. In some
+   // instances, for example when unit testing, this search page isn't defined.
+   if (isset($search_pages['core_search'])) {
+     $search_pages['core_search']['env_id'] = apachesolr_default_environment();
+   }
+
     // convert settings to an array
     foreach ($search_pages as $id => $search_page) {
       if (is_string($search_pages[$id]['settings'])) {
