找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2809|回复: 2

OpenCart迁移

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

+ @. ?) x# K0 ^出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)
0 M4 M2 m) a8 k+ S- ^1 t商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径), D; C$ z2 t: K
后台登录不跳转(原因是session存储目录没有写入权限)( r' ^7 e3 \7 k8 b4 {3 J. v4 {2 A
后台无法上传图片(原因是图片目录没有读写权限)
2 Q- w) g- m/ L列表页无法显示(原因是渲染路径拼写错误)0 p3 c2 R9 K6 A3 v
注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.63 Q7 h$ A8 B6 i8 [
7 Y# ~1 v% n. N9 E( |, a
解决办法
  k% s* w/ T) p& a- ]5 ~1. 缺少php-xml扩展
0 ^0 h  U1 \( f  r: E根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:
( A" v! V5 e2 `& m. W1 k4 e  W! @( W" ^) h5 a
yum install -y php56w-xml$ X! Q9 ^. |& V8 a5 d5 R
19 G  X0 m) ?- [& p: {. t0 i
安装完成后记得要重启php-fpm进程:
# W4 o6 ]9 ?7 o% c' X' [% X, Y) X0 f' `2 j* Y% s
service php-fpm restart& S$ D8 e9 O* n
1
& C0 J$ Z0 r1 K: f重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。
2 A& W# r/ v7 o
* c8 I" W0 ^( K2 ?8 m+ Y2. 商品图片无法显示
: M1 Q! Z+ P1 N, d( s, s" @用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:' X5 Y3 V& `* L) A/ v; a2 K

3 U/ N% U5 [$ @6 G1 T8 x8 }4 R查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;) L0 ?3 y, x( |" R9 }# W7 y
查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错
. {5 U% Y0 D$ w所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。; y: S0 q, s6 T  L5 B& p
再次打开网页,图片已经可以正常显示。5 M' t; ^; Z( g; F3 @) }& V

" H% t( Z* M; E$ U4 |3. 后台登录不跳转! w1 `0 E8 h0 ?* B" @/ R
后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。
# A2 z: N: {4 V9 n  a& k, a/ S& l1 M  l5 j
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)
% D5 l; _$ S2 d* _4 `1
2 r5 \: F1 `# y1 e! e7 X! D找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可
1 q8 P1 o6 J  \2 I- [& V  i' i% h. {, R9 W9 X$ Z2 F
# chmod 755 session/
, _. f4 z- k$ p7 U4 Y1$ p) e3 `# m1 X3 M
至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。
5 [9 O7 ^# u: r3 y1 T3 n8 @! N9 c6 A; f5 e8 e( @5 c" Q. q
4. 后台无法上传图片
5 D# Z2 i% m0 l! T' }; b检查Nginx日志发现的问题是:
! {+ V: F7 w; e7 j+ a# m4 V; s0 u: P4 H1 q/ e/ T2 B" B
[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)
6 X6 z9 ?2 |: e4 ^1
! Z- O2 A+ W9 P此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。
( G/ M: }$ \  v' Y, d* }8 Z9 f% q7 K0 w5 a( H' C( `
解决路径问题,只是其一,上传时仍然会提示如下错误:/ m5 }, m9 w8 ?1 I$ W8 a" H

! F+ d& s% U* }' h; @It was not possible to complete the request due to file system permission restrictions.0 @9 `. L  N0 |0 F3 r9 n1 f5 ^
17 B+ k/ P% ?2 ^6 Q1 i, O- c
这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:5 l2 O3 c# u0 i2 b
, l- H# E" @5 J# {6 N
// 到网站根目录为image及其子目录catalog提权到777& ]& n; g1 S5 _! h
//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)
, j& {& J. ?3 Z: A+ {chmod 777 image;6 [1 o! a& s+ j
chmod 777 image/catalog
# F. z$ {  l+ S1 X! o
; p2 |! U, V4 h' q// 如果 catalog下存在子目录还需要将子目录一并提权
8 V- r" K/ c. H2 q6 |+ ^// 列出子目录
! _5 z% ^* v% o& {9 }cd  /image/catalog && ls -F | grep '/$'
0 u; x7 r; Z( lchmod 777 1/  10/  2/ 22/  
4 a( N! n# @( R' E3 c) M# _5 o  e5 j+ F2 v% I$ p! u6 K" @
// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)
1 L) \3 |( Q" l7 M- J( acd /image/cache/catalog && ls -F | grep '/$'! n$ ?9 s2 z1 \7 }
chmod 777 1/  10/  2/ 22/  " ?& B, D. L: w' Y" u' ], t

, h" t& ~" c1 c& }6 y4 ~' u1
/ t# h9 q2 V( _+ L1 y2, u' ~1 H- D! [* X  s  K  p
3, I- m7 g$ Y& [
4
& W; t! C0 y6 S5
! s2 Z8 B" o" A' R: g6
0 b$ d. t5 U3 R5 ^  ?77 L/ v0 r1 Z! e  I9 `3 l: k
8: l4 c  v( s9 Q0 p. [" U7 o# o& m
9
; D- P8 S$ G+ k8 q) b8 |% c10
* g8 C0 }8 ]( l: s11
$ T  z& q- e, e, |1 y12! x, f" E& i: a7 I. o
13
0 p2 b" z9 u# M14' e6 S! ?, g' b! {4 W' \! w8 e, _# u
回到后台检查,OK,可以正常上传了。
5 k: a  C' x' H0 W- r* m7 ?如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查
  q/ P; H6 r4 p( G0 ~* Z0 c9 R
$ B( g: t8 U! o# o) x5. 列表页无法显示
% N: K. {0 w4 k* y( t控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。
4 w7 U* P( s# }; ]. o1 H2 \
: ?" h! I, Q/ w. j2 f原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382- f; k0 O% z6 V2 X

( r, h9 Y6 ^" P1 l1 _7 B" w
回复

使用道具 举报

 楼主| 发表于 2023-10-11 20:28:52 | 显示全部楼层
Opencart体系是近几年逐渐兴起的电子商务网站平台。其安装便利、功能强大、操作简便,支持多国语言、货币和多店铺,因此备受跨境电商卖家推崇。然而,有时候商家可能会忘记管理员密码,尽管Opencart平台体系提供了默认找回密码功能,但有些情况下用户可能无法通过账户或邮件系统进行密码找回。那么在这种情况下,该如何修正Opencart体系的管理员密码呢?下面将简要介绍三种可行的方法。office-3295556_960_720.jpg/ [& L+ }) N- R& ~1 |" G  \
5 p/ ~6 J: o, a0 N0 |7 y, [( K
方法一:通过调换域名修正管理员密码。
0 M% l9 m7 y" D% k4 U1 K9 z# v% }1 ~, R0 N  L/ h
这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。: s. p9 a' K7 I! i! A) {
+ U# z  K3 b8 E
方法二:通过修正数据库来修改密码。# x) T( y5 U- i# G0 f7 C5 q

8 Q& F3 P, b6 d8 i; b8 X这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。+ y6 z+ G% [! s; Z; P% ?+ y8 q

6 m- G; D( p- w. U! k0 v6 _方法三:直接应用特定网址修正密码。/ ~* f! L9 Z5 ^
* T! w8 P( G, t, g. e
可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。
" r! z3 T0 m7 ?6 Q1 M, k0 Y9 Y3 w: P) @$ G: K/ D  Z/ I
以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。0 Y, d, B4 f. j4 c3 \5 j! e* K
1 P) @9 `* `4 s3 o/ e3 _) j5 X
总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。
! l& R* M/ Z+ p# t( V0 ^: K( A8 |2 C
(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。
0 U, @+ w" P# P. G4 k# \如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。: i6 v* K; u! M( N: [$ B
方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。, H0 B$ n; _/ ?0 m9 U& h* c3 C
, v9 z# x; }- B7 @- v/ l7 e: V3 \
PHP9 N8 N& p) z* A
UPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1' H. x  o7 u0 }( ^$ r% r
或者新增一个超级管理员账号如下SQL,然后再修改密码:  C6 |! y" Z8 V3 I
2 t7 ~& F+ V: X" d( }9 z+ s" a
账号amdin00
! v8 \) U$ N; E- l  O7 K$ ^+ V
) c2 m6 u. p+ L# |密码admin) I* F6 }. O1 _4 _$ Z2 H

; u" X& V$ Q9 rPHP% e" L7 t! U) K& n4 j- W
INSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES! i9 c* _( o4 U  z5 E! t
(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', '[email protected]', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');7 Z# ~/ o" M* m7 f* w; ?  @
方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。+ v  ^' k2 K4 ]" H+ e
, i; l: F/ ~8 y& P# Y) \' d1 S; n& J
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。
8 U9 i0 n3 {- [* H& ]# p/ \- o; I( n3 [
J`~}2_3CPV5UBB0ZGXU4PMQ.png/ p2 Z+ u( x% L3 s/ e2 z- V( G# z( n

4 P" }9 }% O) J9 I* L. q8 ^& n
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-29 21:37 , Processed in 0.094131 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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