Fatal error: Call to a member function read() on a non-object in这个问题是最近帮人做网站遇到的,之前从来没遇到过。
网站做好后,为了让对方能看的效果,我就把整个测试网站和模板一起打包发过去。单对方在用的时候说有问题,又把网站打包给发回给我了,让我直接在他发给我的网站里改。
拿到网站一看,才发现他是直接在我发给他的测试网站里操作的。当我在他给的网站里操作,在更新网站的时候出现模板不存在的提示,模板不存在肯定是模板调用出错了。可是在改条用模板的时候出现了这个提示:
这是什么问题,怎么突然找不到模板了。
用这个问题在网上搜了一下,看到很多结果都说只要删除后台->系统->系统基本设置->核心设置 里面的 DedeCms安装目录里面的内容就行,然而这个解答有一个限制,就是网站必须安装在根目录,否则模板选择显示的问题确实解决了,但在生成网站的时候依然会提示模板文件不存在。
后来对方提醒我说指定域名试试。
我给他的是没有指定域名的,而他在用的时候指定了域名。后来我又做了一些测试,发现一个很有趣的现象。
1、如果不指定域名,转移到另一台电脑,同样不指定域名,则不会出现上面的问题,生成网站时也不存在模板不存在的提示。
2、如果一台电脑安装网站的时候不指定域名,另一台电脑安装网站的时候指定域名,顺序无论先后,在使用的时候都会出现上面的问题。
3、而当两台电脑都指定了域名,上面的问题又不见了。而且在重新生成网站的时候也不会提示模板不存在。
4、用官方网站源码建站,无论台电脑安装网站时是否指定域名,网站建好之后再把模板导入网站,也不会出现上面的问题。
从这里,可以总结出,这个问题是由指定域名和不指定域名引起的。同时这个问题也给我们敲了一个警钟,在用别人的模板的时候不要连带别人网站的测试环境也拿过来一起用。最好的方法是,用官方网站源码建站,然后再导入模板。我想官方之所以提供源码,也是有考虑过这方面的问题的。