我在共享托管环境中有一个基本的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中的一个数组。
注意:
答案 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,但该过程也适用于其他模块:
webform_update_6XXX()
的函数。您可以尝试的其他选项:
这两个选项都很棘手且耗时。
希望这有帮助!
答案 1 :(得分:0)
在Drupal.org上提交了this issue。它看起来并没有解决。我会在freenode上的Drupal IRC频道#drupal上寻求帮助