function drush_shutdown

8.0.x drush_shutdown()
6.x drush_shutdown()
7.x drush_shutdown()
3.x drush.php drush_shutdown()
4.x drush.php drush_shutdown()
5.x drush_shutdown()
master drush_shutdown()

Shutdown function for use while Drupal is bootstrapping and to return any registered errors.

The shutdown command checks whether certain options are set to reliably detect and log some common Drupal initialization errors.

If the command is being executed with the --backend option, the script will return a json string containing the options and log information used by the script.

The command will exit with '1' if it was successfully executed, and the result of drush_get_error() if it wasn't.

1 string reference to 'drush_shutdown'
drush_bootstrap_prepare in includes/
Prepare drush for bootstrap


includes/, line 1102
Drush bootstrapping code.


function drush_shutdown() {
  // Mysteriously make $user available during sess_write(). Avoids a NOTICE.
  global $user;

  if (!drush_get_context('DRUSH_EXECUTION_COMPLETED', FALSE) && !drush_get_context('DRUSH_USER_ABORT', FALSE)) {
    $php_error_message = '';
    if ($error = error_get_last()) {
      $php_error_message = "\n" . dt('Error: !message in !file, line !line', array('!message' => $error['message'], '!file' => $error['file'], '!line' => $error['line']));
    // We did not reach the end of the drush_main function,
    // this generally means somewhere in the code a call to exit(),
    // was made. We catch this, so that we can trigger an error in
    // those cases.
    drush_set_error("DRUSH_NOT_COMPLETED", dt("Drush command terminated abnormally due to an unrecoverable error.!message", array('!message' => $php_error_message)));
    // Attempt to give the user some advice about how to fix the problem

  $phase = drush_get_context('DRUSH_BOOTSTRAP_PHASE');
  if (drush_get_context('DRUSH_BOOTSTRAPPING')) {
    switch ($phase) {

  if (drush_get_context('DRUSH_BACKEND', FALSE)) {
  elseif (drush_get_context('DRUSH_QUIET', FALSE)) {
    // If we are in pipe mode, emit the compact representation of the command, if available.
    if (drush_get_context('DRUSH_PIPE')) {

   * For now, drush skips end of page processing on D7. Doing so could write
   * cache entries to module_implements and lookup_cache that don't match web requests.
  // if (drush_drupal_major_version() >= 7 && function_exists('drupal_page_footer')) {
  // drupal_page_footer();
  // }

  // this way drush_return_status will always be the last shutdown function (unless other shutdown functions register shutdown functions...)
  // and won't prevent other registered shutdown functions (IE from numerous cron methods) from running by calling exit() before they get a chance.