找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2915|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:
: ~! }% Q" Y* j+ H( I5 ?1 W4 W9 Q# u/ {: h1 h9 h
出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)
/ z" s% t+ k  o: }商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)
6 A, F& u0 [5 {9 {8 z5 y后台登录不跳转(原因是session存储目录没有写入权限)8 J, L  q, Y9 k( A
后台无法上传图片(原因是图片目录没有读写权限)1 f- A: V/ _& i% u' ^: ?4 F
列表页无法显示(原因是渲染路径拼写错误)
+ ~. d! {/ [) k/ f- i; F" s注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.61 r; E6 i$ }- [2 J% a& y

5 v8 q# t& k! v. n' s& |% X6 E解决办法; T& K" l3 }6 g8 d+ h
1. 缺少php-xml扩展. J! p- I$ ^/ r' o6 s& X
根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:5 \7 M* }4 q- g' J! ?) o  d/ S2 P1 Z
+ R# r" P3 _2 [1 |- }/ y
yum install -y php56w-xml
; |; c0 x% a2 O7 t. K( L' o1. b( O) Y  s* d/ \, F: a0 o% }7 O) p
安装完成后记得要重启php-fpm进程:
/ i1 U, E5 t% _1 X, k4 r7 B- Z# m2 P* Y# I, a9 I
service php-fpm restart
" u" g$ b' Y8 W* F8 }0 \3 \19 v% P+ g8 P& z' E0 N5 _6 N
重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。
. p7 v$ _: Z; H/ ]/ ~* K6 _( {, p8 w; n$ ^7 m' M
2. 商品图片无法显示
6 R8 S/ v4 G- z用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:' N. Q: f+ p8 t& u4 a9 [& P
3 [6 k& @2 g+ C
查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;4 s! V- u( I" f. [: ]5 U
查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错
! c% [: G9 Q7 ?3 K2 I" y所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。
6 ]% t/ [7 F- S' K  O+ I再次打开网页,图片已经可以正常显示。  K/ g. M4 S& w5 n" n
+ V& u, q# l7 b
3. 后台登录不跳转" i* W6 B' u2 d6 r9 [7 x/ T' |
后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。
% ~( U/ `9 ^* V, X+ X  @, R  L9 |& e6 o
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)/ Z" a1 k$ J, f$ d/ e
1- j6 B+ L) E+ Q& o  C3 |% S
找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可
5 u3 j7 I! V. O0 P1 D4 M& w: `6 v' G. W; _( g
# chmod 755 session/0 u' i# ?$ z7 G) m1 x3 _4 S
1
0 C: f" d3 B9 O至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。
; }* b9 l) c1 T3 o8 S! N3 V
; O9 L4 h# b, X0 z8 _3 X$ P4 R4. 后台无法上传图片! D  O7 J& l7 c- V7 n7 s# l
检查Nginx日志发现的问题是:
0 v% C# A1 u! {/ `) c% \7 ?# H5 c  ]. u3 T
[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory); r0 r4 h7 p1 j9 |) [
1
$ Y6 Q. v$ z$ u* O/ y; a; N此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。: f2 h# k' }7 @+ k

7 s; r+ n9 D& _6 H/ s3 z解决路径问题,只是其一,上传时仍然会提示如下错误:9 N6 |+ }' L6 U5 X
# _3 m) q- c7 K
It was not possible to complete the request due to file system permission restrictions.: k! l; J. ]/ H, x6 Y; y. z
16 j2 ~( h) ]& x+ B! U1 h
这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:
/ d/ J7 v; X3 I
3 b5 o# a/ [; q/ X* [% o1 ]// 到网站根目录为image及其子目录catalog提权到7776 m7 C! ^) u: W0 x. `2 y
//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组). `/ `7 ^. W  e! I/ R# l
chmod 777 image;
8 t" o% i5 R- f8 ^chmod 777 image/catalog
( m, U; X! `( ~# u- t( V3 Q' f( G  W
// 如果 catalog下存在子目录还需要将子目录一并提权
* d# f1 g8 i# a// 列出子目录% R7 X3 a. z; a5 ^  R7 L4 ]
cd  /image/catalog && ls -F | grep '/$'
# w1 c. p* i. ?, f6 m2 r0 o. Achmod 777 1/  10/  2/ 22/  6 ^2 S: j" C2 Y$ e/ n- w

! C, x( @  t& |6 I* ^// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)3 `; _; Z5 ?3 q* i
cd /image/cache/catalog && ls -F | grep '/$'
) |7 W" c! n+ L- ~5 Wchmod 777 1/  10/  2/ 22/  
/ |8 I# E+ B& l* ^$ x
) N2 C! F. i2 T0 ?# V1
6 X) C5 M4 d& K" ~! ^. N- y2/ g; M6 t  F) K6 ], m5 o
31 }) t# e" E9 u9 E* k' M: R
4- q! A9 u8 H0 P. V$ h8 U
5, R9 v% S2 G. I3 b; k  U8 ]
6
+ s0 |) x9 P  A& @7
3 J- N. q% U2 H4 v. ~, ?8+ E) S; [5 C. U- v7 l' u+ Q/ H
9
0 d2 [& A# m" z9 I4 N  i& P10  m; c: i* B5 s1 ~* t
11
! T- ~6 L/ k2 {3 y7 m125 |, y5 W2 D. G7 {9 l6 m4 \% \5 \
13# E- h9 V2 T3 D
140 F! n" E0 G$ b. x; R! G! ^. s4 b
回到后台检查,OK,可以正常上传了。
0 z8 i5 f8 w/ Y* v0 j( y; g% f如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查4 e8 T# \% [& e$ ]7 m+ D9 z

- H0 O, ]" E+ N" [2 F0 r3 f/ @2 a( L5. 列表页无法显示
0 T- o5 q! g" ?控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。% K, `) |: n/ K0 S+ |1 `6 S/ U
. m+ T, E' U2 W5 I. Y
原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382! G' F6 ]5 s& B6 J4 \/ y

/ B- n4 ^8 G5 s' v* o2 M2 q; r
回复

使用道具 举报

 楼主| 发表于 2023-10-11 20:28:52 | 显示全部楼层
Opencart体系是近几年逐渐兴起的电子商务网站平台。其安装便利、功能强大、操作简便,支持多国语言、货币和多店铺,因此备受跨境电商卖家推崇。然而,有时候商家可能会忘记管理员密码,尽管Opencart平台体系提供了默认找回密码功能,但有些情况下用户可能无法通过账户或邮件系统进行密码找回。那么在这种情况下,该如何修正Opencart体系的管理员密码呢?下面将简要介绍三种可行的方法。office-3295556_960_720.jpg
3 O$ B- L3 r* _2 G* W6 I7 ]8 x! j( ^" g
方法一:通过调换域名修正管理员密码。( B) j+ n/ o$ ]0 ?1 B2 h/ Z

6 R8 q: N9 a) ?9 |6 M% t这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。* v9 m; [+ T9 K9 E; M. Q

# K6 Y8 u: _3 r方法二:通过修正数据库来修改密码。
8 V9 k4 F! e, h: Z* X$ m9 e7 b* M4 @: c6 l
这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。* t# L  y! n) k! o( D
) Q$ l4 n) R/ T) B( T3 W
方法三:直接应用特定网址修正密码。
, ]& a0 a0 [0 p- H: V6 T
) W) |2 X$ S* C' }6 T- s- Q可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。/ M1 Y% P4 T" D, m4 |6 C$ t! e
: g1 w: c. v. V2 A5 l: Y
以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。
7 A& S+ [2 k+ W7 j6 o9 s- X
. x+ |- R5 v5 Q) B/ O总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。5 `3 V$ |/ g. W  A5 I# B
6 m# u$ F5 g& g) S& t7 H# t4 x# p
(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。3 _7 e  U  z  z/ o, `
如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。
1 k6 Y5 e0 a7 S" Z$ I方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。( [& K2 Q  k( r* h. n3 F+ }
, p/ @: S: M% O
PHP; B3 Y/ `. k- K) U5 W' F
UPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1) t+ J) F: K) [& U; f0 M3 r* h3 [
或者新增一个超级管理员账号如下SQL,然后再修改密码:
# ?$ x+ n. z- r8 G4 [; z4 }; S+ o! a& M6 ^% j2 [& j
账号amdin00
8 Y6 }# k/ ~' B( c7 N. G  A6 _6 U1 d5 B: Y1 {3 E
密码admin
4 F  p0 M3 c  f% j) j7 n
6 c& Y, @, T. B+ B: mPHP$ z4 ~- H9 K  |! l4 u8 C
INSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES
7 V7 W& |2 s, }3 `: |$ q(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');
- p, J- J! v% m& s5 Y, x方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。
  f9 p7 m8 m6 g- x, D* P; J/ {  `  _7 q
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。5 o$ J8 H; n! P8 b
" v. O7 Q! h+ V) O, \$ t6 o
J`~}2_3CPV5UBB0ZGXU4PMQ.png, y1 O1 [+ V0 e4 {7 L/ p5 x
6 j# r3 P: D  s  Q4 T* r* w3 W
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|赛格电脑 华强北 电脑城 南山赛格 龙岗电子世界 龙华电脑城 沙井电脑城 松岗电脑城 pc4g.com ( 粤ICP备16039863号 )

GMT+8, 2026-3-7 03:06 , Processed in 0.098965 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表