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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2564|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:/ v9 w6 n; O/ e
0 M) Y6 u5 o6 l5 B1 e/ w. h# V1 @
出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)0 f0 |( }5 V8 B  _7 f9 O
商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)9 M! x+ A3 p& g$ e0 C
后台登录不跳转(原因是session存储目录没有写入权限)
! r2 B3 R% R  E" X" {" o# o' h后台无法上传图片(原因是图片目录没有读写权限)% l/ H7 a8 t( ~4 j! D" M
列表页无法显示(原因是渲染路径拼写错误)
/ r; |3 j/ j) j% s注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.66 d6 E' Z/ p2 o7 p

! t3 S  m. p* ~/ o; {9 X6 h解决办法
5 T: [! m# o3 [! \/ ^8 C1. 缺少php-xml扩展
. ~5 D% n- D% W5 m, O$ P! ?1 z) I根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:2 ~# ?4 c2 x" L3 Z, t3 {; i& |, U
; B8 Y$ Y1 m( m- {8 K
yum install -y php56w-xml
* d9 J* b1 t( h7 ]) W, R1% n! s( X! H0 b- r
安装完成后记得要重启php-fpm进程:5 k/ s: ~4 x  H+ h

, x  e  N+ K9 Yservice php-fpm restart0 l& Z: P, A( \7 J* d& A3 \
1; l( G( ^# A+ W3 H/ f
重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。7 W, Q1 Q) ^- a
0 b0 W! ~4 a; U' X* d, q- U- L
2. 商品图片无法显示" N( |4 S  p4 @! p# u; T/ c4 T
用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:
' ?$ H% u+ ~* S* c$ U" x7 }: `7 e3 X! y) ?1 c2 z5 l( i
查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;
8 i0 i* s" K5 V, Y% O; a1 z查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错" e6 P7 [+ T4 S0 W/ a; r/ I( q8 d
所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。
! ~7 b. c5 L$ D% W; L再次打开网页,图片已经可以正常显示。
! h8 H+ L8 ~6 D  A7 z
# h6 @9 i6 _9 I3. 后台登录不跳转
/ p- b5 ~; z; j后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。5 |4 {9 [& k" ^) x/ z" [0 D
7 Z0 q; H. _2 y3 U
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)
* X/ F$ i; A/ E5 n) X4 C/ p1
( Y% G6 W8 g; q4 K" M) C找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可
; V! G8 Z4 T( e# j7 T
8 y. b. G/ M! N/ G4 B1 t/ l# chmod 755 session/
$ Y7 @/ X3 q. G% V3 \1' A! E* m  n9 ]" `- x# g4 V
至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。
9 Q# _8 z/ T: v5 S7 z: q4 d; o4 x# q, N- r
4. 后台无法上传图片
; P+ o* {4 d+ M  r1 I* d检查Nginx日志发现的问题是:
7 |3 V, N, q# x+ Y# K
0 |! _$ G3 s1 ?/ u[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory). d* W" V, u% S9 N. S; \9 k& |
1; W' Z. `1 u' q4 Z
此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。
2 P2 _1 [. E+ D4 s
) Z( @+ a) [. U# I+ n, d" K8 v% B解决路径问题,只是其一,上传时仍然会提示如下错误:" ?0 \) V/ l' H7 }4 x3 B
, B* c, L# @* }2 V
It was not possible to complete the request due to file system permission restrictions.
' |3 K6 F0 w" x' P9 z4 l0 ~8 ^10 q: e: F0 y) a
这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:3 D! x! f$ w+ y; g/ e

4 ]+ S, i9 N6 |: M$ }* d6 c// 到网站根目录为image及其子目录catalog提权到777& @- ^+ f+ t, J
//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)
. x) Q$ B6 z2 c0 c; y; i" r' h5 zchmod 777 image;
& @" M. s: z) s9 Ochmod 777 image/catalog8 [2 E1 \$ f: q9 |
6 \. D- E# p+ ]4 O
// 如果 catalog下存在子目录还需要将子目录一并提权1 P6 ]) P5 q$ |" m' D- j3 j
// 列出子目录
8 S/ t& I/ j' J& a/ {9 }% Z& B6 z1 W8 Jcd  /image/catalog && ls -F | grep '/$'; V7 x% a" C& y
chmod 777 1/  10/  2/ 22/  
' g; ], |% _+ Z* K( j: `; m" y; }4 E
// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)
- M; I1 \% L% ycd /image/cache/catalog && ls -F | grep '/$'0 E6 m6 x, Y) K* i* l6 X7 n
chmod 777 1/  10/  2/ 22/  % a9 d. N( n% N. R4 K8 w$ G$ M
  b3 m' o4 E2 T, I( y, k+ y2 v
14 G* E" L8 i$ }
2% [. z1 ]1 y) y) O) Y) @- i+ Q
3. D6 E! g+ J; i5 K2 K
4
; R0 |+ i" r) {( q2 d( u, M# I5. P0 l! |- R. a8 T3 K' T
6# G' G! P. R, _  o. ]. A4 k( F9 y
72 r; k% M. z+ g6 V) ?
8" l) ~. H. n/ U  R6 {- m& W9 I2 R, k
9
! `2 q3 C4 l4 ^10
; ~6 ]9 C" v2 b11: ?/ J" O" C8 p/ H3 R6 @
12
: a& X' G& U7 v13. @; U' I9 S1 k
14
8 s6 r& G; E. h3 ^  U9 p" e: ^回到后台检查,OK,可以正常上传了。
1 J+ e$ ~$ ]3 `; K2 Y+ c! c5 g9 m% E如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查6 `6 j8 k! ]. S9 B$ f& C: H
* v0 G2 T3 B6 e1 V. D' Q
5. 列表页无法显示
5 o5 t% E0 A, f0 a控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。, d: J$ F5 y. u+ c) a& m

6 F- y% [; N3 U: P& u  t原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382
: m9 Z! h9 G0 p  t3 ~& i# z7 X; v* `4 }. n0 q, k
回复

使用道具 举报

 楼主| 发表于 2023-10-11 20:28:52 | 显示全部楼层
Opencart体系是近几年逐渐兴起的电子商务网站平台。其安装便利、功能强大、操作简便,支持多国语言、货币和多店铺,因此备受跨境电商卖家推崇。然而,有时候商家可能会忘记管理员密码,尽管Opencart平台体系提供了默认找回密码功能,但有些情况下用户可能无法通过账户或邮件系统进行密码找回。那么在这种情况下,该如何修正Opencart体系的管理员密码呢?下面将简要介绍三种可行的方法。office-3295556_960_720.jpg% z1 ]8 i7 o$ I/ U- G0 \) A5 l

; _9 c8 b, r+ I7 O  g# e6 ~% z方法一:通过调换域名修正管理员密码。; T' n) [) U1 ]0 S5 r# D# y) {9 u

( s/ i. J( z( d% r6 B这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。
0 a1 b  s- t  p" S) ?9 A4 V) @5 J/ y& _& o- H  n- r" r
方法二:通过修正数据库来修改密码。
9 f* h) Q* n0 x' z: T" v$ A$ D) |/ O% X- j6 K% M. u
这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。
4 a0 D, a% n( Q, ~8 \- z% j8 U' d/ b" b' P+ B2 b7 t
方法三:直接应用特定网址修正密码。1 M, K5 }. _. z+ Y
7 o& ^! E6 U; H4 @5 @8 p/ v' K
可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。) E  {+ ^' i1 X( b% l

: W& n  j% L  ?! a以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。! M0 q! Z" P% B- `; {9 w2 d2 j5 p$ ]

  P* M, Q5 ^5 [7 |总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。
& w3 g* I2 g( s  E0 m. J
6 a: m, c6 O" Z8 r(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。. D/ B+ b% m- l! M3 x
如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。) W3 G# ]: |  J; V9 K9 c
方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。
, ^& j( x! f# O
( ~  i3 x+ S( S% r1 KPHP
' w6 q' D3 r+ TUPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1
; F- T3 O+ `8 g, _# @4 Y+ d5 L2 Q. R或者新增一个超级管理员账号如下SQL,然后再修改密码:1 Y1 t. @& F$ V6 `0 U
% u$ n( f' R! X+ d( x/ G* m
账号amdin00% A2 g  c1 s/ V' e  m+ S
' B' l' B7 F* C) f) h% H! K
密码admin" |& K& i$ B: Z* }0 t

( q$ H7 S8 K& @. @- k" y' h2 KPHP, n7 U9 H+ L6 ?) c8 \
INSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES
. x' e% x+ o5 `) s% u" ?(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');
  O6 v& X2 s! b) P% y6 Q方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。4 h0 n5 o3 l5 X

1 [: e' J5 i! Y% W$ F这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。
- r/ J$ Y! d8 s! a
. Y: [( I$ W0 s3 J+ \" xJ`~}2_3CPV5UBB0ZGXU4PMQ.png+ ~+ G/ z# L& N# D: h) f
2 P( `) G& Y* T% G" n
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 03:07 , Processed in 0.089115 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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