首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >搞砸了Drupal站点,截断了所有缓存,menu_router,registry_file,现在我无法访问站点

搞砸了Drupal站点,截断了所有缓存,menu_router,registry_file,现在我无法访问站点
EN

Drupal用户
提问于 2014-06-06 04:37:12
回答 2查看 1.3K关注 0票数 1

在禁用了注释模块之后,我无法访问一些模块,因此我研究了如何修复该模块,并最终跟踪了。我清除了所有的cache_table,menu_router和registry_file。

这正是我运行的命令:

代码语言:javascript
复制
TRUNCATE `cache`;
TRUNCATE `cache_block`;
TRUNCATE `cache_bootstrap`;
TRUNCATE `cache_entity_og_membership`;
TRUNCATE `cache_entity_og_membership_type`;
TRUNCATE `cache_field`;
TRUNCATE `cache_filter`;
TRUNCATE `cache_form`;
TRUNCATE `cache_image`;
TRUNCATE `cache_libraries`;
TRUNCATE `cache_menu`;
TRUNCATE `cache_metatag`;
TRUNCATE `cache_page`;
TRUNCATE `cache_path`;
TRUNCATE `cache_token`;
TRUNCATE `cache_update`;
TRUNCATE `cache_variable`;
TRUNCATE `cache_views`;
TRUNCATE `cache_views_data`;
TRUNCATE `menu_router`;
TRUNCATE `registry_file`;

现在我有一个空的网站,我不能浏览或去任何地方。甚至首页也给出了没有找到的页面,上面写着"/“没有找到。

我试着用这些命令重建菜单和注册表,但是它没有工作。

代码语言:javascript
复制
chdir('path/to/site/root');
define('DRUPAL_ROOT', getcwd());
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

registry_rebuild();
menu_rebuild();

我试过使用drush cc all进行钻取,但它说

没有找到Drupal站点,只有“drush”缓存被清除。但是drush status显示它找到了这个网站

代码语言:javascript
复制
 Drupal version         :  7.23
 PHP executable         :  /usr/bin/php
 PHP configuration      :  /etc/php5/cli/php.ini
 PHP OS                 :  Linux
 Drush version          :  7.0-dev
 Drush temp directory   :  /tmp
 Drush configuration    :
 Drush alias files      :
 Drupal root            :  /path/to/site/root

我能做什么?怎么才能在这之后把网站找回来?

EN

回答 2

Drupal用户

发布于 2014-06-06 09:45:17

最好的办法是从备份中恢复它以使其正常工作。

如果要修复它,请从备份(db和文件)中复制站点。然后一个一个地截断表,看看是哪一个引起了问题(应该是menu_router)。

首先截断所有缓存表,然后检查截断menu_router,检查截断registry_file和检查。

关于您所做的代码,请尝试从代码中删除registry_rebuild。创建一个文件fix.php并粘贴此代码

代码语言:javascript
复制
<?php
error_reporting(E_ALL);
define('DRUPAL_ROOT', getcwd());
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

menu_rebuild();

将其保存到您的drupal根目录中,并访问mysite.com/ and .php。

票数 3
EN

Drupal用户

发布于 2014-06-06 09:44:19

我假设您在破坏站点之前没有备份,所以使用您最喜欢的SQL管理工具(例如phpMyAdmin或CLI程序)从备份恢复的明显解决方案不是一种选择吗?

  • 立即创建一个备份(使用您拥有的任何数据库管理工具)。
  • 创建Drupal核心的干净安装。
  • 查看新的漂亮和闪亮的数据库,打印模式(它现在包含的表列表)。
  • 从备份中回滚此架构中存在的所有表,但以下内容除外(所有这些表在备份中都可能不存在):
    • {accesslog} -由统计模块生成的访问日志(默认禁用);
    • {batch} -将用户连接到他/她的批处理(崩溃的站点没有活动用户);
    • {cache*} -缓存只是优化页面加载,总是安全的截断;
    • {flood} -内置防洪工程产生的洪水日志;
    • {registry_file} -代码注册表,在清除缓存时重新生成;
    • {search*} -损失搜索指数和统计量,指数由cron再生;
    • {sessions} -失去用户会话(崩溃的站点没有活动用户);
    • {syslog} -由syslog模块生成的系统事件日志(默认禁用);
    • {watchdog} -丢失日志消息。

  • 请注意,上面的列表总是可以安全地排除在回滚之外。它们只包含短暂的数据,如果站点崩溃,则可能包含坏数据。在每一个后面都有一个注释,解释它的用途。
  • 还回滚以field开头的所有表。
  • 安装您绝对需要的所有贡献模块和自定义模块,但跳过那些您怀疑会造成麻烦的模块。
  • 从备份中回滚属于这些模块的所有表,一个模块一个模块。您可以看到表a属于哪个表,因为表名总是以模块的机器名开头。在每一轮回滚之后,检查您的站点是否健康。

通常,这会给您返回一个工作站点,不会丢失任何内容。

票数 1
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/116443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档