メンテナンスモードをオフにするにはどうすればよいですか?


8

誰かがbrainfxのメンテナンスモードをオフにする方法を知っていますか?私は試しましたhttp://www.website.com/?q=user/loginが、それは私に空白のページを与えます(htmlソースも何もない)。次のクエリを試してみました。

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

レコードには影響しませんでした。

$conf['maintenance_mode']プロジェクトで変数を見つけようとしましたが、存在しません。それ$conf['maintenance_mode'] = false;setting.phpに追加しても何も起こりませんでした。

メンテナンスモードをオフにするにはどうすればよいですか?

回答:


22

Drushを使用してみてください

Drupal 8drush sset system.maintenance_mode FALSE

Drupal 7: drush vset maintenance_mode 0

Drupal 6: drush vset site_offline 0


暗い理由でWindowsサーバーを使用している場合、Drushは使用できません。それは...ですか?
メロマン2018

14

シュニッピーの答えは正しいです。ただし、少なくともDrupal 7.28では一部の詳細が間違っています。

maintenance_modeを変更するクエリは次のようになります。

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

文字列が同様に機能する場合でも、値は整数です。Drupal自体が使用するものではありません。

さらに重要なことに、maintenance_modeのキャッシュをリセットするために、使用するテーブルはcache_bootstrapです。

DELETE FROM cache_bootstrap WHERE cid = 'variables';

キャッシュテーブル内に、IDがvariablesに等しいキャッシュはありません。

これはテストされ、Drupal 7.28で動作します。


1
これは正しいです。この値は通常、同一の演算子ではなく等号演算子を使用してチェックされるため、シリアル化された文字列も通常は機能しますが、この方法の方が安全です。
rooby 2014年

6

あなたはデータベースアプローチで正しい軌道に乗っていますが、変数がシリアル化されているため、クエリは間違っています。実際の構文は次のとおりです。

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

また、変数キャッシュをフラッシュすることでこれに従うことをお勧めします。

DELETE FROM cache WHERE cid = 'variables';

1
永続変数の値がキャッシュされるため、+ 1はキャッシュをフラッシュすることを提案します。
kiamlaluno

5

メンテナンスモードは、変数 "maintenance_mode"によってトリガーされます。これは、アクティブになると1に設定されます。

これは、システムモジュール(system.admin.inc、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);
}

drushを使用して、メンテナンスモードを無効にすることができます。

drush vset maintenance_mode 0;
drush cc all;

variable_set('maintenance_mode', 0)後でキャッシュを使用してクリアすることもできます(を呼び出すcache_clear_all())。


1
Drush for all :)あなたがそれを行うためにdrushコマンドを追加してくれてうれしいです。
慣性

1

ただし、同じ問題がありました。上記のすべての解決策が機能しませんでした。私にそれを解決した唯一のものはcronを実行することでした:

  • 管理者ユーザーでサイトにログインする
  • に移動しますMenu Configuration -> Cron -> Run cron

そのサイトがバックアップされた後。


0

ユーザー名とパスワードを覚えている場合は、http://www.example.com/?q= userからログインします。次に、構成>>メンテナンスモードに移動します。[ サイトをメンテナンスモードする]をオフにして保存します。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.