找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2770|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:
- a. G- ~2 i$ |- D7 n
9 y$ ?# x6 c+ G$ ?4 m, u6 b+ B出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)
0 M3 k& }* |5 Y5 G9 W* [商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)% ?- j) p9 P; K/ y* W
后台登录不跳转(原因是session存储目录没有写入权限)
; H% ?+ p+ q- _7 E: k/ O$ L后台无法上传图片(原因是图片目录没有读写权限)
9 o/ t  N6 \9 h3 B1 b列表页无法显示(原因是渲染路径拼写错误)
9 J( n: v+ |8 w2 J' }: t" N注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.60 w; D7 }' h" p% q& J/ {! R
# V3 R/ v1 Y" n4 M
解决办法
, R2 O/ @) C7 s) d% b. b! L# j1. 缺少php-xml扩展
- Z* x, X+ J& N; s0 y3 @) z5 F根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:
# M* K+ U1 M+ C
" C1 T  {9 ?% dyum install -y php56w-xml& @2 s/ T0 q% Q- ~6 ?) X5 _* p, j% W
1
4 a" o; i  a4 B6 s) J安装完成后记得要重启php-fpm进程:8 T3 Q1 _  P( X( ^+ s6 b

% U( |8 G; V& H8 K2 Lservice php-fpm restart* r$ D" M3 b; d+ r& Z% _3 \2 l% T
10 J9 C9 B/ r# E6 ^% x7 M
重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。
8 u- ~* w3 r9 O# f  ]
# }" _1 R$ q* u( p2. 商品图片无法显示
7 s$ x3 B2 q1 Y8 X% [8 |用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:6 E! f) L. A/ P. x  _9 U6 ?: M* J
1 a" r* D; L, `( w1 G) ^
查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;! ~. M3 X# _5 K; P) k7 E) v
查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错
# o. ^7 {+ c8 U" y, J* l6 y# h所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。
3 V+ W! B* P( ^3 s& O( N" ]再次打开网页,图片已经可以正常显示。
8 K( l4 b8 F/ H; r2 F: m1 I1 }
6 R+ u$ F! A8 B9 f8 Y9 @3. 后台登录不跳转
  ~1 G6 Q! ]) U/ }* w' p后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。
& h0 o9 `2 ]9 D$ Y! B; F  r# @% O/ y+ [$ j. F5 @( Z  N
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)2 M+ ]4 `& l# |8 L- ^% O  Z
1
/ n7 X2 q0 ]. p* s找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可
6 U: J7 Z( O* Z# t2 h
. @9 f$ S& c/ F! j# chmod 755 session/
9 r) T3 @6 j: O9 z2 \& u$ l/ k1& M: M7 c" v4 m1 Y% x
至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。. @! K7 f8 D5 T  u& h. n

: n! H' v9 y7 G. G+ p- |! o7 a# R4. 后台无法上传图片2 @: Z0 }) x  r+ x
检查Nginx日志发现的问题是:
$ v- m. v& ~' V- K/ \1 T/ R5 l6 X) s; W- Z, f
[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)' D" F/ U! h! v9 w8 \
1
1 s+ a! O2 c2 {$ d' a+ }& ?+ V; h此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。: o" K2 J4 K5 D+ X8 R3 n4 q) f, c

  u0 Z2 f* L/ L4 P5 l# O& s8 F7 i解决路径问题,只是其一,上传时仍然会提示如下错误:& S, X$ R+ x8 I' v  W- t2 c

7 \: e6 z3 d6 v  qIt was not possible to complete the request due to file system permission restrictions.
3 L- V" h5 O6 k1
3 G& H; `+ b- f! d# G- X这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:
$ \  f0 i) t5 T4 w! q% T" a  T0 T& u- `) a; A' }4 ]. |, R% M9 h* I
// 到网站根目录为image及其子目录catalog提权到777
& O5 d4 O' ?- ?7 F//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)- `# G5 O/ Q9 r8 O4 C
chmod 777 image;
6 b, c( D( _9 d) h. uchmod 777 image/catalog
3 }  `9 E+ C$ z3 E) F, C
/ S  [! H2 r3 j// 如果 catalog下存在子目录还需要将子目录一并提权5 J( E& {# K$ {/ k* m- e1 ?! K5 z* `0 @
// 列出子目录
" _; q6 f& p$ l4 ]8 Tcd  /image/catalog && ls -F | grep '/$'* k# J2 O; H. z4 z- ?
chmod 777 1/  10/  2/ 22/  
8 ^' z+ r5 r% I) i. ~! o6 I) M, H3 s9 j( ]# _
// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片). u  x: u( e5 i' S) D1 a' D* ]
cd /image/cache/catalog && ls -F | grep '/$'
4 H8 s' @- _1 b" {) M- z; kchmod 777 1/  10/  2/ 22/  3 l4 V; ~$ b! e! ?8 R( ]

0 N2 i, o+ [; C- G) D$ Y1
, B2 i4 b' F( [* N% t( o23 n/ n9 _* F. r5 a+ }* @
3
7 R) F7 O9 J$ v9 [8 f9 |3 o4; ?+ K1 Z. w/ l5 f4 Q) t4 v
5" t' K, a% Y0 V4 Q5 `
6
8 x5 b7 z. i9 r7 }( h% m79 Y4 K/ K3 m! Z1 ~. u2 x
8! }1 c* A* w# ~
9
% z# L9 P5 |; v/ ^, }9 i( t10
! o. q/ k4 {2 ]! C; g& ^& u117 [7 J4 h* @# v( q9 g3 @0 g5 o  P
12  S% c& f. ]% g+ h: |7 w
13
- h; `0 o+ {6 s14
8 U: m; ]$ v6 N. i回到后台检查,OK,可以正常上传了。, M# F9 X# y! {& f# q3 C' V2 r6 H1 q: @
如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查
, x3 W" N1 l# m) S6 @
' w' [9 H9 U+ K- m: I5. 列表页无法显示
+ [) H4 V1 h( K) F, x: G+ n3 y控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。' \& @/ o% d; L$ M) Z2 |

/ K, C" v2 _* j原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382
  B- W4 L. O3 T# T" C$ ~# r. j- B- y! _' m! U6 j+ ?
回复

使用道具 举报

 楼主| 发表于 2023-10-11 20:28:52 | 显示全部楼层
Opencart体系是近几年逐渐兴起的电子商务网站平台。其安装便利、功能强大、操作简便,支持多国语言、货币和多店铺,因此备受跨境电商卖家推崇。然而,有时候商家可能会忘记管理员密码,尽管Opencart平台体系提供了默认找回密码功能,但有些情况下用户可能无法通过账户或邮件系统进行密码找回。那么在这种情况下,该如何修正Opencart体系的管理员密码呢?下面将简要介绍三种可行的方法。office-3295556_960_720.jpg
  t" a4 Y- j) D" g8 S9 f
6 j% u& {1 K6 @, @5 G$ t$ Z方法一:通过调换域名修正管理员密码。& [: d# @9 v/ `3 A( r9 p* x7 L
; x  I" \$ \$ Q" c" b1 j
这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。6 P0 `; P: [8 X- d5 w

# A+ ]; \  W' {1 H4 P; b方法二:通过修正数据库来修改密码。
, U% H8 b$ p( _- M9 m6 u
* Q% q) i4 R; P' q. K1 F; z这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。
. Y; I4 t. O) M, L# r+ ^1 l# a7 V2 o$ V# c
方法三:直接应用特定网址修正密码。% I. E7 t3 P% E+ E8 U

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

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。
$ ^; S7 O$ i2 [5 g如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。
9 a0 U2 |/ a+ n# l方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。
- ?6 f8 v; S5 u4 E) p6 H8 Q" N& F$ `
/ [0 L# t2 ?/ I- EPHP
# j+ J$ M/ j) {- gUPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1# {4 i  ^0 B& M) t( \; H5 F
或者新增一个超级管理员账号如下SQL,然后再修改密码:/ a/ l1 s. K$ e4 N0 |* W& u# t' G
! Q8 y3 z9 U: I" n6 g; l8 ^9 H: W
账号amdin00
$ i' v. ~; a. m' L* `
! O0 l! A) t+ j2 R3 I$ I) S, p密码admin$ U- ~6 T! R- _3 W4 ]. Z+ ~% U

7 X. h: o% D" u6 O0 XPHP
, b. z) |) i% @6 v* u' V7 M" [INSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES
- a) H: o) R* h: M* |- P(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');
+ ?$ h' ~# a+ h2 k方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。
, f. j$ U( a/ H: \& B8 R+ l- B% S
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。. X% ]" ^. S, E! H, V
6 x. |# s+ K: `% N/ ?
J`~}2_3CPV5UBB0ZGXU4PMQ.png
! m- F% C6 C5 v4 I$ N
) ^; _/ |$ J7 `
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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