找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2812|回复: 2

OpenCart迁移

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

$ ~: U* f0 |( m( F1 h& O" [! L# u出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)
* y2 l4 s: ^1 Q# o+ w5 G商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)8 v; }2 C  L4 o2 `2 O0 _
后台登录不跳转(原因是session存储目录没有写入权限)
9 c" z' d6 ~' R1 y/ S+ ^4 u1 h后台无法上传图片(原因是图片目录没有读写权限)
- G: Z9 J. a0 l4 q5 m列表页无法显示(原因是渲染路径拼写错误)$ G' ~! y7 S; v& V3 Y, U8 D) i; w
注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.67 @: A% D: Y8 I( i+ I+ k5 {

( H9 @2 c0 f& i4 e/ Y% S1 e; v解决办法
8 p9 N# D- z" S3 }2 ~& U5 F1. 缺少php-xml扩展
3 a  ]! O4 F# F8 q根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:$ H8 i* d1 A& [/ ~6 e! r; R

/ F4 u( U5 O% N2 u3 c' Uyum install -y php56w-xml, R$ Q) o) s6 s5 P) Q& H: a& b
1
1 B8 }. b! y8 S' ^! \  ~安装完成后记得要重启php-fpm进程:1 P1 D! s9 i. Z+ `
% ?: t2 g/ {! L" ~( u0 W* x
service php-fpm restart# N% O' c3 d" t1 s
1
8 c" R4 r3 {" T重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。0 o0 y* W. S9 r. |
* x7 ?+ H4 i* W5 e
2. 商品图片无法显示
3 Y) Q, o3 x2 n- }: O. Z" Y+ n8 z' ]. ]$ p) e用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:
3 u7 W2 f, J( c- U
/ x* t0 g: s8 N1 M查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;
- g# o4 g& y  P- ~4 j2 M  }查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错
; ~' L# x( |- }" u2 u6 x6 X所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。: R2 a) a: Q7 L- i8 L- a5 p
再次打开网页,图片已经可以正常显示。
+ l# O0 ^( T& i2 g0 p9 [6 T% Y# o: k
3. 后台登录不跳转4 i. ?5 Z6 z, _! @
后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。. f$ C! U% O: T9 e* V0 E

/ W1 |8 D5 ^# X/ O7 @( z3 v1 xSessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)( S0 \3 K3 \- x
12 @* Q! |" s1 S* z8 A
找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可; M( |( y7 N; N( \; u
0 p! f! D& H8 c% T1 q; z
# chmod 755 session/
5 b; y  u- @4 }! H1 v- ~17 f* P' x: R1 d: a, L4 m
至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。
/ |6 O0 T- X) N. o: O! @& b8 u! r7 x# V5 G4 h& v
4. 后台无法上传图片
+ `+ S, `4 w, |& w% C( I/ r检查Nginx日志发现的问题是:" o6 z0 y/ I, x' q& u
9 ]: O1 n. P2 d' A
[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)
% P5 F" y# \9 ^" U1
, C& G  Q' f% b3 X此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。
6 n  C4 Z$ e' Y% \' y+ x& p. ]8 |$ V) E' l) s, T
解决路径问题,只是其一,上传时仍然会提示如下错误:) y/ Z; R/ H4 ~4 s+ N2 O: H3 `
2 d! Z& A5 x  N# r( S# H4 U3 ]7 {
It was not possible to complete the request due to file system permission restrictions.
5 k' v8 x- l8 E8 R15 j9 p, Z# p2 U6 ?
这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:
3 J( T7 O+ s0 O( G" K  i: d+ C  y/ T
// 到网站根目录为image及其子目录catalog提权到777
; ?) b! @9 W# G, {1 ~! M//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)! `" J( n: G/ S& o( r
chmod 777 image;+ b7 L- G% Y9 t  l  a1 ?6 m
chmod 777 image/catalog
# `5 ]0 N  z& j9 a' a0 r) _
  v* C' x  A. z$ j4 H8 S% n// 如果 catalog下存在子目录还需要将子目录一并提权( N# ]8 q2 U! e& s- n  x7 @$ M9 k
// 列出子目录3 ]- m3 z( f+ q- o1 O
cd  /image/catalog && ls -F | grep '/$'; e5 [% ^3 R: Y; v
chmod 777 1/  10/  2/ 22/  
- c- P7 L# m4 ^6 J# X5 t5 k/ [* I2 k/ u, F  s' N
// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)$ P/ ^$ Y5 q/ q% [6 H3 Z" e
cd /image/cache/catalog && ls -F | grep '/$'
8 y# @& u" {% Q' f0 hchmod 777 1/  10/  2/ 22/  9 W# X; C$ l! T/ m

9 R9 z+ b& h, H, I) J5 Q# Z1
: q$ j2 _- M- }- ~- a; `2  l0 n7 T- G/ A0 ^/ x9 S5 O
34 n1 m2 G7 Q8 c7 F. k8 _
4
1 A+ x* i( K& E( o7 `50 @7 I: Y0 d' f# q+ ]. s
6& q% r" Y% m6 o5 g7 G
78 [. v( r. A+ R+ w
8
4 t; D$ P4 w& k, ?, S2 J& |' \9
! A4 J" M, r' P, X9 `3 x108 m1 L8 v+ _- h) O/ O
11
/ H2 N7 ^; k. g. s1 w12* ^" @) ]9 Z3 v1 ]
13
3 j$ x7 G6 b- \3 C$ w; [" L! z14
: e- ]( y6 O5 S2 v% [! }回到后台检查,OK,可以正常上传了。9 o  W& X  G- G& d1 e- i
如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查# l# Y6 P0 o9 Z6 N
" u( a% d! U) z  X
5. 列表页无法显示  d0 N- E- J- L. R) |6 S
控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。- n! v; K; \# L# Q) a

6 w5 K8 y$ f9 a2 z3 a原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382
. X% z4 h# X! u+ b% u" S( B; f; r+ k
回复

使用道具 举报

 楼主| 发表于 2023-10-11 20:28:52 | 显示全部楼层
Opencart体系是近几年逐渐兴起的电子商务网站平台。其安装便利、功能强大、操作简便,支持多国语言、货币和多店铺,因此备受跨境电商卖家推崇。然而,有时候商家可能会忘记管理员密码,尽管Opencart平台体系提供了默认找回密码功能,但有些情况下用户可能无法通过账户或邮件系统进行密码找回。那么在这种情况下,该如何修正Opencart体系的管理员密码呢?下面将简要介绍三种可行的方法。office-3295556_960_720.jpg
+ M- U9 h9 l. ^' n: p# P, t4 E  L! X1 ?
方法一:通过调换域名修正管理员密码。
) n$ M0 P  t# z
- n$ J( A' J% e8 T7 \+ V) V这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。. A8 ?5 E+ L5 }* x

) u1 n; C0 ^" Z5 s" X3 {8 l/ x6 z方法二:通过修正数据库来修改密码。5 o5 `1 ?% n6 m  U

1 s% V( J4 b# t0 k; ~2 d9 D& {这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。0 {1 u" g7 c3 F' y( j0 ^+ ~

# I) f' M# d$ `: g' U6 x" V' Z4 W' I方法三:直接应用特定网址修正密码。+ U) N" v0 O' N  @. |! s
, F* c. q- h  [* e
可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。) K. F! P. W# H; F, W. R0 p
: d& w# {, E! A% t% g6 C
以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。
* |* j( `: m, T$ H  B+ G8 C
/ R4 I. c( i* ~  t总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。
) ]: U) f7 x( J! ]% D' T& ]) T6 e& Z$ u4 e# M7 }& l
(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。
+ s+ ]1 h' }' ^+ I6 n) ~如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。, h/ b; b) X  X  x: k3 T2 _6 q2 U% O
方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。
8 |7 k* h1 C& V7 S% d* i
0 O1 i$ m  Z0 N' jPHP
' J: O& F6 p) {" A+ g  i* ?: p. YUPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1
. ]1 i/ J, g# A1 Y) f+ v或者新增一个超级管理员账号如下SQL,然后再修改密码:
9 r& S" p0 e$ N8 d9 ?. `
" m) {% Q/ f$ V账号amdin006 w, T9 I8 ^: P1 t! z3 Q$ W4 [0 G. J

" P' i/ i' a( ~+ ]) L1 r密码admin1 H1 d# \8 p7 z8 z

* S" \* Y" O+ _0 BPHP
+ l. U: \* @, N% ~, OINSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES/ x& Q. Q" O) `3 e% i2 O
(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');
8 O2 d% z! z  L& z2 O方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。
2 l& r+ X8 M8 C6 h& }1 o7 ]. A
$ o1 ^% j" ]" g0 z这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。
( {- P  G7 J# d" D
# Q9 }3 m" `3 g: ZJ`~}2_3CPV5UBB0ZGXU4PMQ.png1 D( P. L. Y* t
- m. a" e4 ~% f% z  C6 W
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-30 06:03 , Processed in 0.117674 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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