web-dev-qa-db-ja.com

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

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

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

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

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

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

8
John

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

Drupal 8drush sset system.maintenance_mode FALSE

Drupal 7:drush vset maintenance_mode 0

Drupal 6:drush vset site_offline 0

21
echo

シュニッピーの答えは正しいです。ただし、少なくとも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';

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

これはテスト済みであり、Drupal 7.28で動作します。

14
tribis

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

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

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

DELETE FROM cache WHERE cid = 'variables';
6
schnippy

メンテナンスモードは、変数 "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()を呼び出す)。

5
JurgenR

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

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

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

1
roeland

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

0
Fury

Drush/Drupalの最新バージョンでは、コマンドが変更されています。

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

Drupalのドキュメント

0
Damien LAGUERRE