安装 & 运维
upstream sent too big header while reading response header from upstream
网站一些链接点击后出现502错误,查看nginx error日志,里面有一句:
upstream sent too big header while reading response header from upstream
太大的头?drupal返回太大的头给nginx了,于是在nginx里添加以下配置。
Drupal核心autocomplete功能出错
一些nginx服务器的配置硬性隐藏了index.php,导致drupal的autocomplete功能出错(返回404)。
临时解决方法:
修改includes/form.inc
Drupal数值字段类型decimal和float的选择
decimal指定固定长度和小数点后的位数,例如:decimal(10,2),总共十位,其中小数点后两位,即小数点前是八位
float是精确存储数值。
如下例子,做除法时decimal会有精度丢失。
Drupal自身的url rewrite
应该只对url函数输出有效。
消除php5.3出现的strtotime()警告
运行php5.3时当出现这样的警告:
drupal6站点迁移后大量dblog_watchdog报错解决
原样的文件和数据库复制,在新的主机空间访问时,一页竟出现两百多个的dblog_watchdog写入查询,全部都是关于cck或cck相关模块(例如link模块)的警告提示。经查证,根源是是cck及cck相关的模块造成。到官网上查发现许多类似问题(Notice: Undefined variable: element),多数都要打补丁来解决。
玩转Drupal7缓存配置技巧
drupal6有个著名的cacherouter模块,能同时支持db、apc、memcache、file缓存,可以灵活配置各种缓存在不同地方,例如默认在apc、cache_page在file、session在memcache等。
(顺便说说,cacherouter的作者对drupal团队有意见:“我这么好的模块为什么不加入核心?”呵呵)
drupal6里boost模块安装的nginx重写规则
将
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?q=$1 last;
}
}
改写为:
慎用EntityCache模块
我辛辛苦苦配置了几天的ubercart,安装了EntityCache后,性能未见显著增长。当卸载EntityCache时,页面报错:
'EntityCacheTaxonomyVocabularyController' not found
尝试过清缓存/update/重启服务器等等处理手段,故障依旧,EntityCache如蛆跗骨,似乎是个不可逆工程。
上google搜'EntityCacheTaxonomyVocabularyController' not found,只有两条记录。第一个看了没什么帮助,第二个http://danecabutterfield.com/ ,哈哈,自己看。。。
如何让nginx也支持drupal的upload progress
Drupal的Filefield模块原生支持pecl的uploadprogress扩展,但是pecl的uploadprocess只支持apache!
还好nginx也有个upload progress模块,有高手为此写了个对应的drupal模块:FileField Nginx Progress
可惜的是,该模块的配置文档只有寥寥几行字,而drupal官方仅支持apache,关于nginx的文档实在不多,而且权威性有限。我东拼西凑搞了份nginx的配置,用着都没有什么问题,就是upload progress出不了。
考虑到安全性,这里仅贴出一部分配置: