摘要:今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题: 出现报错YOU NEED THE PHP "DOMDocumen...
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:
YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED
(原因是系统没有安装php-xml
扩展)注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6
根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml
扩展:
yum install -y php56w-xml
安装完成后记得要重启php-fpm
进程:
service php-fpm restart
重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。
用Chrome工具看了一下,商品列表中的图片src
显示为unknown
,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:
product
表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;config.php
文件中的路径配置,发现路径中使用了软链接/www/
而没有使用绝对路径,这种用法很容易导致程序运行出错所以果断更换了该路径为/home/www/
,重新上传到网站根目录和admin
下的两个config.php
文件,两个均需要修改。
再次打开网页,图片已经可以正常显示。
后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn
,不要使用debug
级别,日志记录太过详细导致几百行日志记录看不到问题所在。
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)
找到问题所在,解决就简单了,转到/var/lib/php/session
目录,设置session
目录权限为755即可
# chmod 755 session/
至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。
检查Nginx日志发现的问题是:
[error] open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)
此问题和前面的第2个问题一样是因为/www/
路径为软链接路径,是在Nginx
解析配置www.domain.com.conf
中使用了该路径,改成/www/
的绝对路径/home/www/
即可。
解决路径问题,只是其一,上传时仍然会提示如下错误:
It was not possible to complete the request due to file system permission restrictions.
这是CKEditor
编辑器的报错,这种报错多半是上传路径的权限不足导致的:
// 到网站根目录为image及其子目录catalog提权到777
//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)
chmod 777 image;
chmod 777 image/catalog
// 如果 catalog下存在子目录还需要将子目录一并提权
// 列出子目录
cd /image/catalog && ls -F | grep '/$'
chmod 777 1/ 10/ 2/ 22/
// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)
cd /image/cache/catalog && ls -F | grep '/$'
chmod 777 1/ 10/ 2/ 22/
回到后台检查,OK,可以正常上传了。
如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查
控制器下的/catalog/controller/product/categorylist.php
在渲染输出时误将product/Categorylist
中的Categorylist
首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。
// 错误写法
$this->response->setOutput($this->load->view('product/Categorylist', $data));
// 正确写法
$this->response->setOutput($this->load->view('product/categorylist', $data));
免责/版权声明:
本篇文章给大家谈谈OpenCart一般的迁移步骤以及Opencart对应的知识,感谢你花时间阅读本站内容,希望对各位有所帮助,你也可以查看更多关于Opencart的信息。
1、所有来源标注为 ECMSPLUS/zwcms.com的内容版权均为本站所有,若您需要引用、转载,只需要注明来源及原文链接即可,如涉及大面积转载,请来信告知,获取授权。
2、本站所提供的文章资讯、软件资源、素材源码等内容均为作者提供、网友推荐、互联网整理而来(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考,如有侵犯您的版权,请联系我们,本站将在三个工作日内改正。
3、若您的网站或机构从本站获取的一切资源进行商业使用,除来源为本站的资料需与本站协商外,其他资源请自行联系版权所有人。
4、 ECMSPLUS/zwcms.com不保证资源的准确性、安全性和完整性,请您在阅读、下载及使用过程中自行确认,本站亦不承担上述资源对您或您的网站造成的任何形式的损失或伤害
5、未经 ECMSPLUS/zwcms.com允许,不得盗链、盗用本站资源;不得复制或仿造本网站,不得在非 ECMSPLUS/zwcms.com所属的服务器上建立镜像, ECMSPLUS/zwcms.com对其自行开发的或和他人共同开发的所有内容、技术手段和服务拥有全部知识产权,任何人不得侵害或破坏,也不得擅自使用。
6、互联网的本质是自由与分享,我们真诚的希望,每一份有价值的正能量能够在互联网中自由传播,能够为每一个网站提供动力。