Wie schalte ich den Wartungsmodus aus?

8

Weiß jemand, wie man den Wartungsmodus für brainfx deaktiviert? Ich habe es versucht, http://www.website.com/?q=user/loginaber das gibt mir eine leere Seite (keine HTML-Quelle oder irgendetwas). Ich habe die folgende Abfrage versucht.

UPDATE `variable` SET `value`='0' WHERE 'name' = 'maintenance_mode';

Es hat keine Aufzeichnungen beeinflusst.

Ich habe versucht, eine $conf['maintenance_mode']Variable im Projekt zu finden, aber sie existiert nicht. Das Hinzufügen $conf['maintenance_mode'] = false;in settings.php hat auch nichts bewirkt .

Wie schalte ich den Wartungsmodus aus?

John
quelle

Antworten:

22

Versuchen Sie es mit Drush :

Drupal 8 :drush sset system.maintenance_mode FALSE

Drupal 7: drush vset maintenance_mode 0

Drupal 6: drush vset site_offline 0

Echo
quelle
und wenn wir uns aus irgendeinem dunklen Grund auf einem Windows-Server befinden, ist Drush nicht verfügbar. Ist es?
Meloman
14

Die Antwort von schnippy ist richtig; Einige Details sind jedoch falsch, zumindest in Drupal 7.28.

Die Abfrage zum Ändern des Wartungsmodus sollte lauten:

UPDATE variable SET value = 'i:0;' WHERE name= 'maintenance_mode';

Der Wert ist eine Ganzzahl, auch wenn eine Zeichenfolge möglicherweise ebenfalls funktioniert. Es ist einfach nicht das, was Drupal selbst verwendet.

Noch wichtiger ist, dass zum Zurücksetzen des Caches für den Wartungsmodus die zu verwendende Tabelle cache_bootstrap ist.

DELETE FROM cache_bootstrap WHERE cid = 'variables';

Innerhalb der Cache- Tabelle gibt es keinen Cache mit einer ID, die Variablen entspricht .

Dies ist getestet und funktioniert mit Drupal 7.28.

Tribis
quelle
1
Das ist richtig. Obwohl die serialisierte Zeichenfolge im Allgemeinen auch funktioniert, da dieser Wert normalerweise mit dem Operator equals anstelle des identischen Operators überprüft wird, ist dies sicherer.
Rooby
6

Sie sind mit dem Datenbankansatz auf dem richtigen Weg, aber Ihre Abfrage ist falsch, da die Variablen serialisiert werden. Die eigentliche Syntax lautet:

UPDATE variable SET value = 's:1:"0";' WHERE name= 'maintenance_mode';

Außerdem ist es eine gute Idee, den Variablen-Cache zu leeren:

DELETE FROM cache WHERE cid = 'variables';
schnippy
quelle
1
+1 für den Vorschlag, den Cache zu leeren, da die Werte persistenter Variablen zwischengespeichert werden.
Kiamlaluno
5

Der Wartungsmodus wird durch die Variable "wartungsmodus" ausgelöst, die bei Aktivierung auf 1 gesetzt wird.

Dies ist der im Systemmodul vorhandene Code (system.admin.inc, Zeile 2194).

/**
 * Form builder; Configure the site's maintenance status.
 *
 * @ingroup forms
 * @see system_settings_form()
 */
function system_site_maintenance_mode() {
  $form['maintenance_mode'] = array(
    '#type' => 'checkbox',
    '#title' => t('Put site into maintenance mode'),
    '#default_value' => variable_get('maintenance_mode', 0),
    '#description' => t('When enabled, only users with the "Use the site in maintenance mode" <a href="@permissions-url">permission</a> are able to access your site to perform maintenance; all other visitors see the maintenance mode message configured below. Authorized users can log in directly via the <a href="@user-login">user login</a> page.', array('@permissions-url' => url('admin/people/permissions'), '@user-login' => url('user'))),
  );
  $form['maintenance_mode_message'] = array(
    '#type' => 'textarea',
    '#title' => t('Maintenance mode message'),
    '#default_value' => variable_get('maintenance_mode_message', t('@site is currently under maintenance. We should be back shortly. Thank you for your patience.', array('@site' => variable_get('site_name', 'Drupal')))),
    '#description' => t('Message to show visitors when the site is in maintenance mode.')
  );

  return system_settings_form($form);
}

Sie können drush verwenden , um den Wartungsmodus zu deaktivieren.

drush vset maintenance_mode 0;
drush cc all;

Sie können den variable_set('maintenance_mode', 0)Cache auch anschließend verwenden und löschen (mit einem Aufruf an cache_clear_all()).

JürgenR
quelle
1
Drush für alles :) Ich bin froh, dass Sie den Drush-Befehl hinzugefügt haben, um dies zu tun.
Inertialmedia
1

Ich hatte jedoch das gleiche Problem: Jede der oben genannten Lösungen funktionierte nicht. Das einzige, was es für mich gelöst hat, war, den Cron zu betreiben:

  • Anmelden bei der Site mit dem Administrator
  • Gehe zum Menu Configuration -> Cron -> Run cron.

nachdem diese Seite wieder gesichert war.

Roeland
quelle
0

Wenn Sie sich an Ihren Benutzernamen und Ihr Passwort erinnern, melden Sie sich unter http://www.example.com/?q=user an . Gehen Sie dann zu Konfiguration >> Wartungsmodus . Deaktivieren Sie die Option Site in den Wartungsmodus versetzen und speichern.

Wut
quelle
0

Mit der neuesten Version von Drush / Drupal hat sich der Befehl geändert:

drush state:set system.maintenance_mode 0 --input-format=integer
drush cache:rebuild

Drupal-Dokumentation

Damien LAGUERRE
quelle