找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2772|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:. D& j' w3 _  X; T! l

- U. u1 p  S2 C* p出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)
0 A* j% |. T! y3 `: U商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)
# Q. ?' [2 V2 O/ F) l, ~后台登录不跳转(原因是session存储目录没有写入权限)4 S1 t7 I8 r# @# F% l, p
后台无法上传图片(原因是图片目录没有读写权限)
6 L: r  N: c) \$ H8 r列表页无法显示(原因是渲染路径拼写错误)& g4 h, r. q' g: n. ]
注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6
( h+ v2 g! P: x( A* m  i) |
# l# x5 d  b  x3 ^3 i4 |" [! [解决办法
2 s0 k9 d7 p5 l$ z6 G8 l+ v, z1. 缺少php-xml扩展
  h* i3 |8 D; U根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:
' b6 I' q, j- G1 N" A% `3 K5 T3 \
1 l2 x; |  p6 p# n- x6 jyum install -y php56w-xml" v5 B# ~% c+ F, v! C0 ^: W- i3 b7 q1 _2 A
1
, [0 s2 }- Y* p7 t安装完成后记得要重启php-fpm进程:+ O; A. y! b1 f( d8 V6 N

! j  c; e* U/ N  k0 Y# Z1 Yservice php-fpm restart( T9 j# o! m9 e$ e/ U. ?* g: Q
1
, t9 K2 O+ v3 r$ U/ d重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。
* F9 |) Q% T* L6 w! O! S" T4 D& u# }" B" t% t, [
2. 商品图片无法显示
+ U7 m4 x- \! X& H. m用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:
9 Y  v' {6 ^* d2 `: y
2 w. x2 U" T& d- i- w# C( _$ E查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;* ?: P$ [& y7 R: C
查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错
$ S3 ^2 D& Y7 X! ^% y所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。
$ }0 H- `8 m* e3 [, |' I8 T再次打开网页,图片已经可以正常显示。1 Z0 A4 y9 D% n) a
2 f# K9 |1 c" F, t  M
3. 后台登录不跳转
$ j' D  x; s0 {; T& r" D* v# n后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。2 S8 L7 {% q: Y3 [$ y2 e% \
& E8 n$ k( q5 P: |/ E- R2 w/ v' y
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13); V# h. i9 k; t* H- D7 o
1
- u( |/ E( F+ M$ X找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可# T& b# [3 W, ?6 K

' b( I" K# o* x2 a6 Y, U# chmod 755 session/
7 m( n. y* b% J' O7 n5 p3 ]- u1' d$ \8 H9 @* s# l
至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。
# {8 e: i% q) j3 D, ]% \% ~2 {* P, |7 t# B/ O2 v
4. 后台无法上传图片$ ^0 l* n$ i- e1 Y
检查Nginx日志发现的问题是:" O! r6 D+ d# _' ~+ H0 e
1 \( s& K% ^3 d. E0 U
[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)
  D- f2 ]; l% N, ^1
* u; R8 \; M) A: Q此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。. d# [! p+ z+ Q0 u
8 G( ]# _3 f6 U- |8 P$ T' h
解决路径问题,只是其一,上传时仍然会提示如下错误:8 p' B. Q, `5 o2 z; O# }

4 \! a1 X) j5 ]: }; zIt was not possible to complete the request due to file system permission restrictions.2 ?  U$ O: \6 y( O5 X
1, v$ ~+ K! G& w2 ?
这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:
1 t& @% \( l; o$ j% n$ O
( C+ u- a$ M6 i+ g. `8 a// 到网站根目录为image及其子目录catalog提权到777
5 y/ E& u; i  Y1 D# A( u//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)
  {' V6 G3 O8 k; J0 u% achmod 777 image;* N/ h( J7 G3 X; a1 K. H
chmod 777 image/catalog
2 @6 Q! A# t' W' o& a9 n' D9 ^2 K5 ^
// 如果 catalog下存在子目录还需要将子目录一并提权4 T  t( A. F6 ]+ @- W  n
// 列出子目录/ ?4 b9 R  }. g, ^$ I
cd  /image/catalog && ls -F | grep '/$'* R6 v& T' P; _2 g& ]8 W+ o. u
chmod 777 1/  10/  2/ 22/  
* V# o( h7 _. a/ ]5 e6 x, D% l; I7 E5 A/ C3 \% g/ `1 J
// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)
/ T' H, y2 j" l, {0 r! y2 Jcd /image/cache/catalog && ls -F | grep '/$'! e( Z- v7 @  w  R1 @6 T6 O
chmod 777 1/  10/  2/ 22/  0 q; Q. w+ v  g

9 J0 `5 l3 ~5 A. G9 P1* n: p6 E$ h! e- D  `$ A% v  D
2
& S( i- Y. T- W! L3/ r- |0 S: o: b, ], L) C
4* S4 [& m$ v( {" y- I$ e$ s! z0 X6 P
51 w+ M; U2 P  }. ^& N% m  C: N# V; v
6
2 I1 x9 G3 w0 x: _& J7
* v6 b6 e: r" ~, `* n7 i8
  n3 P* d- ~& J0 |9) M/ G3 L3 X' E3 J; H0 U
10
* G) j5 V4 ~1 L11
$ }; j) ]9 q8 w" g+ e( p5 b12
; d: W" Y+ L; R( B7 y2 ~  I13. d; u) d) O# u9 l- S& m
14* r4 a9 n, ^% l4 J
回到后台检查,OK,可以正常上传了。* h( d% i7 i, _0 R
如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查
; [& u: U: T/ A) x' B( J7 R* t1 w9 P! Y3 p. W
5. 列表页无法显示+ \' {* W: Q2 k7 K6 D& J3 T- c8 W
控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。" ]. E2 B0 i; o* R" o( S2 g
& Y5 }3 d5 L& e: d. E" ^7 N
原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382! U6 p5 a9 F5 R' L7 k1 O" }( ?

5 {- q& [0 ^. @' U" a
回复

使用道具 举报

 楼主| 发表于 2023-10-11 20:28:52 | 显示全部楼层
Opencart体系是近几年逐渐兴起的电子商务网站平台。其安装便利、功能强大、操作简便,支持多国语言、货币和多店铺,因此备受跨境电商卖家推崇。然而,有时候商家可能会忘记管理员密码,尽管Opencart平台体系提供了默认找回密码功能,但有些情况下用户可能无法通过账户或邮件系统进行密码找回。那么在这种情况下,该如何修正Opencart体系的管理员密码呢?下面将简要介绍三种可行的方法。office-3295556_960_720.jpg
/ m1 Q7 c8 M. y* k; H- r+ W# F. g) Z9 M* x. h
方法一:通过调换域名修正管理员密码。
3 z5 ~  p2 k, Q) g. C" e: m3 j3 ^6 A- k1 W3 F; C# t! Z# U
这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。
  u( k9 K0 R: K* r. c$ T, R( w. o" \# I3 b
方法二:通过修正数据库来修改密码。
+ C) C* U- S( t- V, ?* z+ H4 [% x. _5 r9 G6 r6 @8 b! D+ V$ O4 _
这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。5 v' G+ O7 t- n1 X9 n) [
! Y4 C1 z* c# r( w
方法三:直接应用特定网址修正密码。
" p6 o: p% M  C4 Q% A
$ S9 y2 s- L5 v6 X" O2 o1 v& c; [可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。7 g3 l, I( Z7 m1 V$ v
% f$ i- D( e& \, J5 o- d, T. T
以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。
; E6 K$ q' h  O8 u* c  L
4 L+ {; k9 w4 [总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。+ A( O: r9 |3 Y1 b" o( E

/ }+ X& D& X% x- s; D4 x(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。+ ^) ]6 t* H: V2 U8 \/ f
如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。
! @: D% a" S% ]. T! g方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。0 ]: h' V! h; M& C

( i7 C) G, Z' q# J0 L- I4 hPHP
( g* U# V; a0 s; x3 U9 g3 b! WUPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1
' |# G. D* q+ p或者新增一个超级管理员账号如下SQL,然后再修改密码:0 j" ]: ?$ E- T' r
- `8 @* d# N! V0 m7 z7 a9 S
账号amdin00
$ e$ X$ ~; D2 U, ]: e; F6 e# l
5 p9 y- u6 v: ~+ e密码admin- E3 m( d) t4 O% z' n

; a" }+ Q* h+ ]7 v" pPHP
2 j$ _' }; M# \; n" L2 CINSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES
; J! P  L) c+ e  l; j(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');) R" w' J0 W/ t( U
方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。
8 M, m2 ]' E/ ^7 i  L9 `/ p6 r" p* Y# Y, [! A( m
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。% ]4 h2 v/ t1 b- R( d6 X0 W

3 Z  [* d$ h* v/ R( x' R6 AJ`~}2_3CPV5UBB0ZGXU4PMQ.png5 r+ J$ ~: W* ~2 F; S
+ L7 T# e/ b! J1 W/ S* r
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-13 12:30 , Processed in 0.039425 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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