华强北电脑城 龙岗电子世界 龙华电脑城  凯尔电脑

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2352|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:
4 k. r) c5 N5 ]3 W" |. C5 M7 a5 N% U; g6 W8 E0 h- p- ]# o
出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)
- I7 X1 C& g/ C. d/ z8 z商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)
  G/ w( C. s  g$ i. P3 }后台登录不跳转(原因是session存储目录没有写入权限)( y1 A) p9 [4 D3 ]3 @
后台无法上传图片(原因是图片目录没有读写权限)2 R: x4 ]  @4 E+ f6 H* v
列表页无法显示(原因是渲染路径拼写错误)
0 s$ W" ?% ^. D- {8 t# B注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.69 P4 d2 q0 h: w" d" r6 b/ H% l
2 c$ o. O$ D+ i8 j# [* u; `
解决办法
6 l) G# w/ a5 f9 R" q& ?2 c. K1. 缺少php-xml扩展
8 S- C6 {2 D) p7 ~# M) W根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:
6 l  l. o+ Z1 W
% z# Y2 w# o3 Fyum install -y php56w-xml0 b& `" @$ {, c3 [4 K$ W$ d; E$ g
1) V1 c; r$ y( s3 ^; R2 {
安装完成后记得要重启php-fpm进程:. p" M2 g1 P" ~8 m

* }( h& n! r) B& `' o+ U; gservice php-fpm restart
2 |& ?/ G/ x/ P( S- Z% i/ _1& ~$ w/ e6 j, A4 N7 P5 g( ]0 t
重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。* v# `2 S4 t" K5 w5 u
) e" Y. ?4 M/ q& X& g8 s
2. 商品图片无法显示
' C7 l# s( ^7 C" E" E- Z用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:
" {* F- r, L' O. `" O
6 X6 b% `2 @' t( Z查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;" K2 n1 N: X. V$ a1 k: t
查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错& ?3 x$ A1 ^! b) I% M; R: ]
所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。
  }2 r! f. i( }6 ^8 x" M再次打开网页,图片已经可以正常显示。. n/ e  j* f7 T  a. n
( [, I8 _. ]4 p) ^7 x+ A  I* `
3. 后台登录不跳转! K: ^0 Y6 B6 l' A/ S) ]+ [
后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。. m" X8 S, Y2 x; v' x7 b

5 }. b& Q0 o0 S4 p/ G" ~SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)
/ @" `$ `5 \9 g* f& k' @& X+ k1
7 l2 Y0 C; @4 ?5 I找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可
7 G8 m3 v- B  [+ E& w2 q
& E0 z5 D' f$ Z* [7 x" z( X  c$ u* ~# chmod 755 session/
' W, J/ e( e6 ?( O1& h$ f' m5 R5 |' Q$ E5 U# d8 }
至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。8 o2 ~. J# M# w) S$ J- P

7 i: L" T. m/ a* t  l/ z4. 后台无法上传图片
- |  z6 b; d2 [$ b. Y% D- e检查Nginx日志发现的问题是:7 U4 `3 F8 }: }% m+ p. ]
: ]( i3 L( ]" m* G: J2 @
[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)
1 {3 t5 b7 s. e1
0 D' C* O  H: ~# y此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。
6 f6 P, w9 L/ n  H/ R) c6 L( q1 `$ ~2 ]' Y6 z4 ?
解决路径问题,只是其一,上传时仍然会提示如下错误:
# l! N0 m9 T" b
) j, h0 k3 o' z. ]  N. ?It was not possible to complete the request due to file system permission restrictions./ `9 t' `2 f' _1 U# V6 @
1$ u" ^" t3 o% K! l* B% x. g0 `& ?$ X
这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:/ o( g9 b" x  P# j- l

2 M' m1 a; t. s* c. g! V// 到网站根目录为image及其子目录catalog提权到777
$ |" U$ v1 o* o3 e//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)1 U5 ^1 T) C* A5 ~
chmod 777 image;
% G) z  X. h0 D8 Rchmod 777 image/catalog
! F, ~, D& L" M5 o2 C3 O" R" G5 ?' b& m4 |5 p/ C' u: V  O
// 如果 catalog下存在子目录还需要将子目录一并提权
7 c- e; n$ x' P/ Z  k2 s. w. B4 y// 列出子目录% E" c; e3 s8 Z& D6 Y
cd  /image/catalog && ls -F | grep '/$') V. C* |9 k; Q( Y, j# k3 `
chmod 777 1/  10/  2/ 22/  : M7 F- |1 b6 _0 J* Q( w8 t1 A
2 w7 ]) m2 I' H8 E+ W( p: z3 Q
// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)' P4 {+ U! v! A8 z
cd /image/cache/catalog && ls -F | grep '/$'" ]. o) z- K/ W' \- i. c# E
chmod 777 1/  10/  2/ 22/  
( I* J1 w1 h1 S/ d6 Z" E( X; ^3 f% ^+ U# t$ \0 _
1
/ A8 z, o. W2 f5 f! a9 m2
* E, P6 M$ s% A" @3' k4 A+ f6 p# K
4
; `: s" V- w! Y5 D2 K& [5
3 R3 F  ]* J2 c" j/ H6
# u& ^1 t* c6 L- v9 j# R! D7
. t! O' f6 T5 s: e8
) n& T5 F, L% c) q) V9
' Q" t! J8 x" J  G" D/ Z7 O8 M10
' M' j4 C0 M5 w; G3 ]( q  ^, m2 K  h11
, d" m3 N. L2 |7 H12
# X. }/ o1 z  @; c4 i: S8 i139 J! J, g  }* n% W0 m
14
! N, S6 L: p$ q' R回到后台检查,OK,可以正常上传了。1 D1 x& \5 c9 M) E* j+ h* `% {9 }7 f( Q
如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查+ o* _! C0 V* A. v2 O; k
. {% j6 z# c3 Y: n  D: S
5. 列表页无法显示
! l( u) W; z- n8 e控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。! _0 k4 H% j8 C! z% C
: c& ]9 K! a! \% [1 D
原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382
( k& Y* c: K7 {* W0 B0 v2 Q$ ^2 g0 b9 I4 t' T# B/ |
回复

使用道具 举报

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

! O; o, r& J0 J0 k4 d% {0 ?; ]这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。
; q7 l. {* l7 X) P6 e1 J7 a* H
5 C3 n7 \. a0 t# w方法二:通过修正数据库来修改密码。8 s/ Z2 V6 x$ |
/ b0 t$ V: O1 K, x, B# s7 @" W
这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。. h, ^; w5 O$ k' A  E6 D

2 q* f( A( S5 ~3 V3 g( e$ \) M方法三:直接应用特定网址修正密码。
2 y5 a$ @* T/ k0 Y5 i3 m
9 e  R% c4 U4 F2 n2 w可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。. X" |1 f6 f7 |* S2 Y& I
& ^- V# X. I. ~( ]
以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。
+ S+ l0 d/ F7 K- k; B5 W4 U  e0 b3 W
, n7 y) W) a. e" N总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。! t6 _2 o$ g0 d1 q6 m
6 `) R% U! S% j& B1 D. E$ J9 t
(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。
6 k2 e9 I, O! {& I& A5 I如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。
; u4 ]. O  W, ]9 g! i, S# ~+ m方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。0 f6 B6 G- [4 B/ G

5 D: t  D# Y# o  j" s5 j0 [PHP
: L6 T& l6 C" M& r. X4 OUPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1  Q2 O4 e& b" M8 U6 s' `
或者新增一个超级管理员账号如下SQL,然后再修改密码:  i+ i" R" [5 e: z2 @+ `

- B+ y+ A0 }3 L账号amdin00
# _2 V2 ?6 s- j8 u; \" x1 u# S& M+ \3 v
4 J/ G: c3 X+ S+ Q密码admin3 I) I  Y7 c) D! C7 ]  B
* u& r+ t; a8 H' K
PHP
! P* N7 t, k1 {& B* v, OINSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES- ~7 o: {8 e. ~# s6 g) r
(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');# v9 K3 w( X+ u# {/ G- ]
方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。2 t. Z  {) {% q0 {. D0 I8 J9 N4 c
2 B3 e8 N# ~7 q) Y, I
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。6 s. q5 \- {" r0 X# I+ @% q  V
, V' p" ~+ A; v# {
J`~}2_3CPV5UBB0ZGXU4PMQ.png( i; Y) ~) h2 `# D
! ]' H5 W7 R0 c; e. v! N- \% V$ k
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|华强北 电脑城 龙岗电子世界 龙华电脑城 pc4g.com ( 粤ICP备16039863号 )

GMT+8, 2025-4-19 16:54 , Processed in 0.089654 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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