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

本文记录了在使用Odoo10时遇到的静态资源404问题,包括重启、清理缓存和Session均未能解决。经过排查,发现中文文件名导致Odoo无法识别,移除中文文件名后恢复正常。解决方案是修改`openerp/tools/osutil.py`中的`walksymlinks`方法以处理非UTF-8目录名。
摘要由CSDN通过智能技术生成

今天早上到公司,访问一下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!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值