评论

收藏

[织梦CMS] dedecms搬家远程附件 DedeTag Engine Create File False等N多问

建站程序 建站程序 发布于:2021-09-01 15:27 | 阅读数:326 | 评论:0

文章介绍

话说AB模板网搬家经历,之前网站一直在美橙放着,但是后实在受不了美橙的空间,太不稳定了经常打不开。一狠心就把网站搬到了BlueHost(以下简称BH),因为那个时候,刚搬到BH后感觉还是可以的,但好景不长,现在BH空间越来越不给力了,打开速度也变慢了,时而中断无响应,相反在美橙没有搬的其他网站还稳定了。据说是美橙更换了一批老服务器。于是决定再次把网站从BH搬回美橙。因为网站是备了案的,所以可以直接搬回来。但是搬回来期间碰到了各种各样的奇葩问题,下面接着看dedecms远程附件图片整合阿里云存储OSS插件教程
dedecms远程附件,解决空间大小限制问题
搬到BH后网站AB模板网(www.adminbuy.cn)经过差不多一年的发展,所以累积了大量图片,大概有15000张。因为国外的空间大多是不限制空间大小的。但是要搬回美橙那不一样了。10000多张图片差不多有500MB。空间费太吓人了。没办法谁叫中国的空间贵呢。所以开始折腾dedecms远程附件,因为之前大概看过dedecms自带的远程附件功能,以为折腾这个比较简单。谁晓的,谁晓的,谁晓的哪有这么简单。仔细翻了dede远程附件是根据同步本地服务器和远程服务器的文件来做的,其中包括文章HTML啥的。不的不放弃了。所以准备自己搞下

这里先说下大概思路,我的目的就是让发布和修改文章时下载文章的远程图片然后再上传到BH远程服务器,这样我国内的美橙的空间只存放一些程序文件和生成的文章HTML

熟悉dedecms的朋友应该都知道dedeincinc_archives_functions.php就是文档的处理函数了,包括发布、修改文章都会引用到该文件。而我要修改的就是获得文章body里的外部资源 GetCurContent 这个函数了,大概说下这个函数

1、首先获取文章内容中的所有图片地址;

2、分析如果是站内图片并且设置了下载远程图片的话,程序就下载这些图片;

3、更新图片信息包括:大小、路径啥的到uploads数据库方便删除文章时删除附件;

4、给下载的图片加上水印;

5、替换文章中的图片路径$body = str_replace($value, $fileurl, $body);

我现在使用的百度编辑器,所以编辑器图片上传远程化稍后会在另外一篇文章 dedecms使用百度编辑器(UEditor )图片上传远程化 中写到。

我的修改方法是新建一个上传图片到远程服务函数,在上面第四步完成后(即打了水印后),就上传图片,然后替换文章图片路径为远程的图片地址就行了,这里我只是说下思想,代码我就不贴出来了。上传函数可以dedecms自带的FTP类,另外缩略图的远程保存方法跟这个类似的。

移动文件和数据库到新空间
解决了dedecms远程附件的问题,就考虑搬文件和数据库了,首先是下载文件,这里说下一般不用下载DATA目录,用dedecms程序包的就行,这个目录下有很多缓存文件,少则几千,多的过万。然后上传所有图片到远程服务器。其他目录包括默认的dede,include,plus因为修改的文件比较多也就一并全部下载。

购买了200MB的美橙空间,上传了全新的DEDECMS安装程序,安装好之后,然后上传上面下载的dede,include,plus等几个目录覆盖。然后通过dedecms后台的数据库备份工具备份好下载之后上传到新的进行还原。

替换老文章的缩略图、内容的图片为新的远程图片路径
update dede_archives set litpic = concat('远程附件的域名', litpic) where arcrank > -1;

内容的图片路径就通过dede后台自带的数据库替换功能替换body就行了。更新完之后,在后台随便点了几篇文章看下,图片都正常显示的。

DedeTag Engine Create File False问题
所有数据、文件都准备好了,心想生成就完事了,结果....

生成到2000多的时候就报DedeTag Engine Create File False错了,直接百度、GOOGLE了一下,这里列一下现在网上写的一些出现这种问题的解决方法。

1、定位报错文件,打开/include/dedetag.class.php文件直接搜索DedeTag Engine Create File False,把$fp = @fopen($filename,"w") or die("DedeTag Engine Create File False"); 改成$fp = @fopen($filename,"w") or die("DedeTag Engine Create File False:".$filename); //意思就是多输出一个报错的文件

2、上面只是找到报错的文件,然后再更新报错时就会出现DedeTag Engine Create File False:/a/201212/16524.html,形如这样的错误

3、dedecms更新生成栏目时出现DedeTag Engine Create File False,解决办法:根据出错文件查找到对应栏目,查看 编辑栏目->高级选项 里的 列表命名规则:{typedir}/后面有没有出现多于的"/"

4、栏目以前是 最终列表栏目 形式,但是没有删除该栏目之前的文章就改成 外部链接  形式,解决办法:先把栏目改成  最终列表栏目 形式,清空所有文章后再改成 外部链接  形式

5、文章模板文件不存在,就是文章调用的模板文件有可能被删除了,或者说文章模板文件没有读取权限 [这个是dedecms官网上给出的解决办法]



我累个去,上面的方法我试了一个遍,可问题还是没解决,经过几番折腾,突然觉悟了,空间满了。因为之前上传了备份的数据库文件大概有80MB,我可怜的空间只有200MB。哎!登录空间管理一刷新果然是超了,苍天,大海,删除了数据库备份文件之后更新终于没有报错了。@fopen($filename,"w") or die("DedeTag Engine Create File False")就是写入文件出错,从这点来解释就好理解了,没有权限写入不了肯定报错、空间超限肯定不能写入了,路径出错也一样。至于官方说的那个模板读取权限为什么会引起这个问题,我就不知道了,希望知道的朋友告诉一下,谢谢!,

更新数据库archives表时出错,请检查!悲剧
当晚折腾DedeTag Engine Create File False问题到很晚,第二天还是早早的起来更新网站,莫办法做网站就是这样。然后修改保存文章又报错了 DedeTag Engine Create File False 苍天啊,这日子还杂个过。又百度搜索嘛,但是网上多数是说由于升级字段缺失造成的。比如说dedecms5.6主表没有voteid投票这个字段,升级到dedecms 5.7的时候没有更新数据库也会出现这个问题,解决办法如下:

进入dedecms后台 -> 系统 -> SQL命令行工具执行 ALTER TABLE `dede_archives` ADD COLUMN `voteid` int(10) NOT NULL DEFAULT 0 AFTER `mtype`;

但我这是搬家也不是升级,对不上啊,而且我检查了字段都是有的

.....10多分钟过去了

由昨天的问题引发的答案:数据库满了,所以说更新数据库archives表时出错,请检查!不一定是程序本身的问题,反正出现这个就是往数据库写数据失败引起的,从这点出发找答案。

草草的收尾
这次搬家是使用dede这么久来最痛苦的一次,但是dede常见搬家还是比较简单的,大概步骤列一下:

1、上传与老空间上的dede版本相同的安装程序到新空间安装好;

2、备份老空间上的数据库,一般通过dede自带的备份工具,也可以通过mysql数据库管理软件phpmyadmin导出;

3、下载老空间的文件,包括网站模板、图片、修改过的dede程序文件等上传到新空间;注:data目录有数据库连接信息,如果数据库也搬家了记的要修改再上传;

4、使用空间自带的三级域名访问新空间网站、导入第2步中备份的的数据,更新缓存,一键更新;

5、测试无问题后,解析域名到新的空间;


关注下面的标签,发现更多相似文章