odoo静态资源无法访问的问题

今天早上到公司,访问一下odoo10,发现小图标都没了,看日志,发现大多数的静态资源访问请求都报404,例如:

"GET /web/static/lib/fontawesome/fonts/fontawesome-webfont.ttf?v=4.5.0 HTTP/1.1" 404 -

 去源代码目录下检查,发现这些静态资源都在,相应的目录也有读取权限。怀疑是不是运行中出现什么错误导致该问题,于是重启odoo,但重启后故障依旧。

于是又怀疑是不是缓存问题,于是分两步,第一步是清除浏览器缓存,但清除后不见效;第二步清odoo的session,清除后并重启后还是无效。

于是在“小伙伴们与odoo在一起”群里求助,得到群主jeffery和toby的热心分析。

后来发现一个规律:每次odoo重启后,第一次访问,日志中会报错:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 37: ordinal not in range(128)

 但接下来访问就不会了,然而资源还是找不到。于是想到以前出现过因目录或文件名中有中文,会导致odoo无法识别而出错的问题。而上周末,我复制了两个addon的zip文件到自定义addon目录下,并且为了直接了解addon的作用,在文件名中写了中文,怀疑可以是这个引起的。于是在addon目录之外新建了个目录用来保存带中文的zip 文件, addon目录下确保无中文。

再次重启odoo并且访问,这次不再报“UnicodeDecodeError”错,打到的登录页面图标也正常了,登录进odoo之后,一切都已恢复。

根据toby的解释:odoo在处理非utf-8的目录名或文件时会出错,而且一旦出错就不再往下执行。并且,toby给出了解决办法:

修改 openerp/tools/osutil.py的walksymlinks方法(odoo8):


 在odoo10中,应该是第38行附近:



 

再次感谢toby!

猜你喜欢

转载自sheng.iteye.com/blog/2368369