【问题标题】:Site stuck in Maintenance mode in Drupal 7站点在 Drupal 7 中停留在维护模式
【发布时间】:2014-02-03 09:19:16
【问题描述】:

我的网站是在 Drupal 7 中开发的。最近我将我的网站置于维护模式。现在我需要让这个网站恢复运行。

不幸的是,我无法以管理员身份登录和“上网”(因为用户登录表单中的一些修改)。我还尝试通过数据库查询更新“site_offline”变量。但这也没有用。令我惊讶的是,db 中没有像“site_offline”这样的变量。为什么会这样?

有人可以帮忙解决这个问题吗?任何帮助或建议将不胜感激。

【问题讨论】:

    标签: php database drupal-7 maintenance-mode


    【解决方案1】:

    我也遇到了同样的问题,我在 settings.php 文件的末尾添加了以下语句。它奏效了。

            $conf['maintenance_mode'] = 0;
    

    来源:https://www.drupal.org/node/276457#comment-9364023

    【讨论】:

    • 我遇到过几次这个问题,而且这个解决方案过去一直对我有用。不过这一次,即使这样,任何已注销的会话仍会以维护模式加载。
    【解决方案2】:

    无需更改数据库。

    只需将 $conf['maintenance_mode'] = 0; 添加到您的 settings.php 文件中。 这将覆盖默认设置。

    【讨论】:

      【解决方案3】:

      如果您退出后无法重新登录,只需在您的网站地址后添加/?q=user,您就会回到用户登录页面。

      【讨论】:

      • 到目前为止最简单/最安全的方法,如果您可以看到使用此登录的 .. 投票赞成。
      • 这对我不起作用(Drupal 7.69)。我不得不使用 YOURSITE/user/login
      【解决方案4】:

      如果您可以访问该站点的 crush shell,您可以简单地运行:

      # from drupal root (/path/to/index.php)
      drush vset maintenance_mode 0;
      drush c all;
      

      如果没有,或者这不起作用,请将变量表中的“maintenance_mode”属性更新为“i:0;” (不是 0,因为 drupal 将这些设置存储和解析为长 blob)。

      #sql statement
      UPDATE `variable` SET `value` = 'i:0;' WHERE `name` = 'maintenance_mode';
      

      注意:如果您只能访问数据库,您可能需要手动清除所有缓存表。

      【讨论】:

      • 我已经尝试了 sql 查询来更新维护变量。但这没有用。无论如何感谢您的快速回复。
      【解决方案5】:

      最后我找到了解决这个问题的方法。我使用以下代码通过管理员以编程方式登录到应用程序,

      global $user;
      $user = user_load(1);
      drupal_session_regenerate();
      drupal_goto('user');
      

      Reference

      登录后,我从 admin/config/development/maintenance 更改了维护配置。

      更新

      请确保在网站从维护模式恢复后删除上述代码。否则,这将为访问该网站的任何用户提供管理访问权限。

      【讨论】:

      • 很高兴你能成功!只是好奇,你是不是在更新maintenance_mode变量后手动删除了每个缓存表的所有内容?
      【解决方案6】:

      我发现解决方案是简单地导航到您的站点名称/用户/登录名

      只需以站点管理员身​​份登录并关闭维护模式即可。

      它比上面的代码建议要简单得多......

      令人讨厌的是,这个“简单”的修复花了我一个小时的谷歌搜索,并浏览了其他论坛上建议的各种兔子洞。

      也许我们(作为开发人员)应该花一些时间来学习如何使用我们被要求支持的产品?

      【讨论】:

      • 这在 7.84 对我有用!谢谢。
      【解决方案7】:

      您也可以通过编辑 index.php 并设置变量“maintenance_mode”来手动使其退出维护模式

      <?php
      /**
      * @file
      * The PHP page that serves all page requests on a Drupal installation.
      *
      * The routines here dispatch control to the appropriate handler, which then
      * prints the appropriate page.
      *
      * All Drupal code is released under the GNU General Public License.
      * See COPYRIGHT.txt and LICENSE.txt.
      */
      
      
      /**
      * Root directory of Drupal installation.
      */
      define('DRUPAL_ROOT', getcwd());
      
      
      require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
      drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
      variable_set('maintenance_mode', 0);
      menu_execute_active_handler();
      

      来源:https://www.drupal.org/node/2072055#comment-7784641

      【讨论】:

      • Really 这是怎么回事!
      【解决方案8】:

      我推荐 Drupal 文档:

      它基本上说明了 Alexander Farber 发布的内容,但也表明一旦您登录,您将导航到管理页面,根据 Drupal 版本,转到以下链接:

      • Drupal 4:管理 » 设置 (admin/settings)
      • Drupal 5&6:管理 » 站点配置 » 站点维护 (admin/settings/site-maintenance)。
      • Drupal 7:管理 » 配置 » 开发 » 维护模式:删除“将站点置于维护模式”框上的复选标记

      【讨论】:

      • 我认为您的答案中“缺少手册”部分是您如何导航到登录屏幕。 - /?q=user 上面的建议对我不起作用。此外,最初的提问者以某种方式修改了他们的登录名,因此他们无法以管理员身份访问该网站。它确实引出了他们如何能够管理他们的网站句号的问题,但我想这是另一个问题。对于任何正在搜索如何查找登录提示的人,因为他们希望关闭管理员模式。只需导航到:您的网站/用户/登录
      【解决方案9】:

      这听起来可能很疯狂,但在某些 Apache 版本中,Web 服务器打开的默认文件是 .html 并且在 Drupal 7 根目录中有一个 index.html 和它的内容是:

      Website is Under Construction ....
      

      所以只需将该文件重命名为 index 以外的其他名称,然后您的 Web 服务器将打开 index.php。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-20
        • 1970-01-01
        • 2010-12-22
        • 1970-01-01
        • 2016-02-17
        相关资源
        最近更新 更多