Drupal update.php产生错误

时间:2009-11-21 18:16:26

标签: drupal drupal-6

我在共享托管环境中有一个基本的Drupal 6站点。该网站已经运行了大约一个月。

我上传了webform Drupal模块的新版本,当我去update.php完成页面时,我收到了错误。 update.php预览页面不显示webforms所需的任何更新,但如果我继续,我会收到以下错误。也许如果没有补丁我不应该继续使用update.php?

在“运行更新”步骤中,我收到此错误:

  

发生HTTP错误0。 http://nejewls.com/update.php?id=8&op=do

在审核日志页面上,我收到此错误

  

警告:array_pop()[function.array-pop]:参数应该是第314行/home/nejebel4/public_html/update.php中的一个数组。

注意:

  • 该网站是Drupal 6.14
  • 6.x-2.9
  • 未知的Webforms
  • 我尝试在.htaccess级别禁用SecFilterInheritance
  • 网站重定向到.htaccess文件中的www
  • 我将settings.php中的基本网址设置为包含和不包含www

2 个答案:

答案 0 :(得分:3)

第一个问题:你怎么不知道你正在运行什么版本的webform?它在网站的模块或更新页面中显示了什么?如果没有显示那里。系统表中数据库模式的价值是什么?

第二个问题:我有一个同事,因为他安装了模块的开发版本。您确定以前只使用过beta版或稳定版而不是开发快照吗?

然后,至于解决方案......

我没有任何网站方便在哪里尝试重现您的问题。但是你得到的警告不是真正的问题......对我而言,似乎问题是webform的更新无法正常运行或无法正确报告成功。

生成警告的代码位于update.php文件中,它是:

if ($_SESSION['update_success']) {
  $output = '<p>Updates were attempted. If you see no failures below, you may proceed happily to the <a href="'. base_path() .'?q=admin">administration pages</a>. Otherwise, you may need to update your database manually.'. $log_message .'</p>';
}
else {
  list($module, $version) = array_pop(reset($_SESSION['updates_remaining']));
  $output = '<p class="error">The update process was aborted prematurely while running <strong>update #'. $version .' in '. $module .'.module</strong>.'. $log_message;
  if (module_exists('dblog')) {
    $output .= ' You may need to check the <code>watchdog</code> database table manually.';
  }
  $output .= '</p>';
}

因此,只有在更新过程中出现问题时才会运行生成错误的代码。因此,它看起来是您正在更新的模块中的错误。

如果我处于你的情况我绝对想要或需要最新的更新我会尝试手动执行更新。这是如何做到的(我假设您的模块是webform,但该过程也适用于其他模块:

  1. 备份您的数据库!
  2. 确保安装了开发人员模块。
  3. 浏览数据库表“system”并找出您当前为 webform 模块安装的模式版本(通常是一个以6开头的四位数字)。
  4. 打开模块目录中的webform.install文件,并搜索模式版本大于您拥有的模式的所有更新。它们看起来像名为webform_update_6XXX()的函数。
  5. http://example.com/devel/php可用的php控制台中,一次运行一个所有这些更新,直到找到破坏系统并可以调试它的那个。
  6. File a bug使用您的补丁,以便社区可以从您的工作中受益。
  7. 解决问题并安装所有更新后,您可以使用上次运行的架构号手动设置系统表。
  8. 您可以尝试的其他选项

    1. 备份您的数据库!
    2. 完全停用并卸载webform模块。
    3. 安装新版本的webform。
    4. 通过SQL从备份数据库中的表中手动导入数据
    5. 这两个选项都很棘手且耗时。

      希望这有帮助!

答案 1 :(得分:0)

在Drupal.org上提交了this issue。它看起来并没有解决。我会在freenode上的Drupal IRC频道#drupal上寻求帮助