跳转到主要内容
木棉 提交于 28 October 2012

原文链接:http://drupal.org/Troubleshooting-FAQ

 

如果你的Drupal网站有一个问题,可能不止你的网站出现了这样的问题。你的问题可能已经被提出了很多次。为你自己节省一些时间在你提交问题之前看一下这个常见问题的列表。

  • 如果你在这里没有找到答案,你可以进行全站搜索。
  • 如果你依旧没有找到答案你可以向Support Forums寻求帮助,或是学习使用IRC然后在#drupal-support IRC频道提问。
  • 其他的常见问题,看 Drupal FAQs。

Drupal故障指南

1.思考

你最近是否安装或是更新了模块?

你安装的模块版本是否跟Drupal的版本相同?例如,Drupal7的views在Drupal6的站点上无法工作。

2.读错误信息。依赖于你怎样设置你的错误消息显示,Drupal特定的错误消息可能会显示在上面。当core dblog module被开启,你会找到错误报告/admin/reports/dblog。当你调试的时候可以检查非Drupal日志,例如Apache,PHP,等等。你的主机提供商可以帮你找到这些日志。

错误可能包括:

.htaccess配置问题-"Internal server error"-错误500 directive not allowed here

存储问题- Fatal error: Allowed memory size of 8388608 bytes exhausted

JavaScript问题-modules/troublesome/utility.js 404 file not found.

3.页面验证

不完整的HMTL标签和结构会导致你站点的主题有问题比如错位,不正确的字体大小,溢出区块,等。当你调试你的站点,通过错误消息和评估找到错误存在的原因和解决方法。你可以不知道怎么解决所有的问题,但是你需要知道都存在哪些问题。

4.检查你站点的CSS

你站点可能显示不正确因为CSS规则可以覆盖另一个。如果你不熟悉CSS,你第一步应该学习更多关于cascading的东西。如果你对CSS很熟悉,查看子页和容器可能存在的问题。特别的,一个项目的边框可能是另一个的填充(特别是列表项)。此外,当你需要覆盖你站点的CSS,在你的主题中新建一个Style.css,而不是修改内核文件。

你可以用这些工具检查你站点的代码

FireBug - Firefox

Web Developer Toolbar - Firefox和Chrome

DOM inspector - Internet Explorer

5.清除Drupal的缓存

为了提升性能,Drupal创建一个缓存请求资源,它可能会显示缓存中的那个旧版本。为了解决这个问题,你可以清除一些或是所有Drupal缓存,得到新的页面。

  • Drupal 6:清除缓存,点/admin/settings/performance底部"Clear all caches"的按钮。
  • Drupal 7:清除缓存,点/admin/settings/performance顶部"Clear all caches"的按钮。

6.阅读模块说明

  • 模块的说明文件包含:
  • 贡献者的信息和建议
  • 依赖(例如PHP的扩展)
  • 要求
  • 安装说明
  • 警告(例如模块冲突和补丁)

7.查找错误

由于Drupal很受欢迎,可能你所遇到的问题其他人之前也遇到过。使用Google查找你的错误信息。查找时,确保使用的路径不是你本地环境的包括引用错误信息。在你搜索的单词中添加上"drupal",能够帮助你返回一个更精确的结果。例如, Google: "Argument #1 is not an array" drupal。

8.研究代码中SQL的错误

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(n.nid), n.title FROM category c INNER JOIN category_node r ON c.cid = r.cid INN' at line 1 ...  in /var/www/html/doadance/drupal/includes/database.mysql.inc on line 120.

这种错误几乎没有由于Drupal内核的问题发生过。相反的是,可能是由于Drupal模块发送了错误指令给Drupal。调试时,试着确认数据库的表能够查询确认是哪个模块出现了问题。这样像是模块的分类。然而,也有可能是由其他模块引起的试图直接访问数据类别。

9.通过module代码调试

找到问题的最佳方法是显示涉及的源码。如果还没有安装,第一步就是安装 Devel module这儿有一步一步的找到调试错误的方式:

warning: in_array() [function.in-array]: Wrong datatype for second argument in /home/httpd/global/drupal/modules/node.module on line 1303.
  • 到node.module的地1303行。你要更改文件前要首先保证已经保存了一个副本确保版本是最新的。
  • 在1303行, node.module的in_array('status', $node_options)。
  • 在这行代码前插入代码:print("Node options are : '".print_r($node_options,1)."'");.
  • 观察输出尝试确认数据类型错在哪里。

10.问题导致的答案

Drupal论坛上提交问题的时候,确保以一个聪明的方式问问题。一旦问题被解决了,确保后面的问题在同一帖子上。

11.给你的问题确定模块

一旦你找到引起问题的module,打开.module的文件。moudle的页面定义在 hook_menu()里。很多模块能够通过查看URL来调试,然后确定模块服务的内容,最后查看hook_menu()和.module files中的代码。