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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2574|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:
" Z% @; z: b' F8 x9 ^! r
& Z9 T/ h7 [  c, ^% j6 ~. M出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)
8 N7 Z; j" O4 |5 @+ f% p: P& N商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)5 Y! V% R9 w: \" y9 m; q3 m
后台登录不跳转(原因是session存储目录没有写入权限)
4 j+ t- g. }2 ~6 o0 j+ T/ z# X后台无法上传图片(原因是图片目录没有读写权限)5 u( E1 _) D& u$ |
列表页无法显示(原因是渲染路径拼写错误)9 i$ B$ a4 F6 K
注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6" n0 b7 \* w% y4 N3 E' w$ H

, |: r9 g! X% ~! o' l) W解决办法8 Q) K% W1 v( ]3 u4 Z# a, L) \$ Z
1. 缺少php-xml扩展+ [# ^7 @+ \9 d3 d. V4 b. D
根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:( D- P9 Y$ u) R5 W% D

! c8 G0 m0 Z3 G; syum install -y php56w-xml
* n& A: @  \5 U# R+ \1
: s# Y3 K8 @( L$ M; C5 z! J2 U. t  t) S安装完成后记得要重启php-fpm进程:
+ n. e5 z4 d0 y$ l+ M' e) N' T) Z9 R* h6 w1 Z
service php-fpm restart
! J. q) v, O9 P- H1 g1
: B2 O% j9 y  z- w7 z! D; @! n& O重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。2 j2 N! g2 d$ i2 D$ G" `2 r/ `8 {
% \+ y! l& J. I
2. 商品图片无法显示
/ S" D. ^* j5 B- c) h# ^# r/ B用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:
& s8 y* L% w& c# c7 I  ]( E
/ w% O  A, ?$ }5 y查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;! s5 q6 I6 s$ i
查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错5 h" I. O( \) z( c  |
所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。7 [, u/ A9 j: V' m
再次打开网页,图片已经可以正常显示。
3 f2 R! ]% B. ~* }& J  a; ~1 N" p+ x
3. 后台登录不跳转
, E+ h. J, ]9 S/ I! n% n后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。. |( E' h; X! o+ Q! E! s. Q
4 B* J' c* o8 X) V) c9 f6 x7 c
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13): Z' O$ F8 \5 P' U+ F6 \
1) B% p5 \' [8 A  f9 O
找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可
. ^7 `5 K. \; R1 c1 X! W* T3 u" ~7 y! n* e( V
# chmod 755 session/
+ f7 B; m: F/ h" P, V+ R1
/ l4 U, k5 ?: @至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。: ]3 c  g# V1 k  ]% g5 l) o
& n) R2 K1 w! r* z" ]4 H
4. 后台无法上传图片- j$ n; i1 R5 Y$ S7 Z" n# [
检查Nginx日志发现的问题是:
, C+ i( Q5 h$ A/ l3 x
8 l% @- F  Q5 k9 K[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)/ p9 y: R8 J: A# a' l
1
1 F: F" \* o1 e% l6 a7 P此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。
$ Z0 @7 R. D$ a. Q! _/ D' c! }! R$ ]- a: }2 b1 H% R/ d
解决路径问题,只是其一,上传时仍然会提示如下错误:9 w( N4 B# e: {5 L$ i, V
/ f' z' t7 T' ]
It was not possible to complete the request due to file system permission restrictions.! ?2 i0 [# l. y, f$ n/ N) m8 h/ m
1
5 m6 x& ?) J0 `  i. @3 b这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:* q5 W# x8 G# ^/ L) b; [

3 }, x- _- x% T1 w* S1 R8 i% `// 到网站根目录为image及其子目录catalog提权到7779 ^7 d' c, _# Z4 _) R0 }& ~0 y
//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)- w1 `2 ~  n; [% e- {
chmod 777 image;- r5 K3 ^  G( S) m
chmod 777 image/catalog
8 ^6 C8 w0 W- T: B" \% C
* z6 N, m# p5 u3 h6 h, H0 _, t// 如果 catalog下存在子目录还需要将子目录一并提权3 F  ?; ^. X$ h9 n6 q3 q
// 列出子目录6 a, a- @5 i. p: h; {2 {
cd  /image/catalog && ls -F | grep '/$'5 T# Q& h  j0 E8 S6 C  s" L
chmod 777 1/  10/  2/ 22/  
" I4 M; c8 `( A8 S! ], x" p, S/ _0 m% X5 |) x" q3 a
// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)8 T2 z: y0 `% D  t! X! n+ @$ |) R- _
cd /image/cache/catalog && ls -F | grep '/$'
( F' l/ m( F& cchmod 777 1/  10/  2/ 22/  
3 |+ A  r7 Q7 y1 a# R6 _+ U3 g! T
( t, H. X1 l# M1
: s( y7 H! }" F7 h2$ ~9 Y5 E! A  Q2 F  O
3
+ G3 ^1 g0 f6 U  |+ |( a  e42 }/ ^) Q% r! S
5
$ u* g: k/ P  ^65 o/ J8 ]0 j: O2 m
7- h) x; C: Q. j# e6 }9 g# X/ P
8) O+ Q, t! Z) r8 V% P3 G; Q7 }
9! @# E( y( A4 t. K$ n$ J! \' F5 @
10
# ]; l% q6 B6 |: i11
( W3 }! Y! c* F8 |4 @3 o12
$ ^: _. q* I# i" ]. P/ z2 ~9 O13
8 Y1 B) B1 A+ `; m8 t4 {+ f( m14
7 M$ I& C0 d- x% e& c) C回到后台检查,OK,可以正常上传了。5 r6 w4 D9 g/ o- }5 Y3 u/ {
如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查
: N" D( F# s. Q6 e9 O( V: g& l1 J& u# W7 Q
5. 列表页无法显示
. y3 `- i: G( H- |0 R; e控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。/ w8 `  M1 j3 K# S
& L+ A# C% c. z0 n' ~' O
原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/907203820 K% j0 e$ @0 ?9 L6 F  [" a$ O& |

% o3 e: R. s5 D3 A' i8 X2 Q  m
回复

使用道具 举报

 楼主| 发表于 2023-10-11 20:28:52 | 显示全部楼层
Opencart体系是近几年逐渐兴起的电子商务网站平台。其安装便利、功能强大、操作简便,支持多国语言、货币和多店铺,因此备受跨境电商卖家推崇。然而,有时候商家可能会忘记管理员密码,尽管Opencart平台体系提供了默认找回密码功能,但有些情况下用户可能无法通过账户或邮件系统进行密码找回。那么在这种情况下,该如何修正Opencart体系的管理员密码呢?下面将简要介绍三种可行的方法。office-3295556_960_720.jpg4 o, a' A) z1 x4 v- m0 l' l
5 I4 ~0 O+ I: U/ F, y8 d
方法一:通过调换域名修正管理员密码。( K3 h5 s5 o  d! V6 G+ T

! x) ~5 D8 x$ }* }& }8 ]: r; s这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。
4 x7 I. b+ q( c" Y- U$ S1 U) A& z
% m" V; G  t3 b) q: f5 C2 F/ x方法二:通过修正数据库来修改密码。
7 ^5 k- u" r- f  J1 W; e5 \) {, Z1 i# ~9 W: L+ m( C
这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。4 I! `7 q5 t6 {' Q3 r
1 B' }% [% j3 y/ _/ T1 C
方法三:直接应用特定网址修正密码。* ?, z6 H* g! b, D

% i2 F* L- {6 w$ p- I" d可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。- a" F( P# l( s! J. b# X' ?8 M

+ M  [- z$ B7 ?; ^- y& H& V以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。" s# v0 N! g+ a
9 c( y" F; U* n) P, E. ^/ j
总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。
0 a2 z; ^' d; }" E, p& C1 G$ R
% f- M4 @! l5 z7 ](本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。  z6 B8 N4 e% ]* n
如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。  c  M  M( r9 q9 V$ e$ D
方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。% K, e+ K# ]( q$ c$ J6 Y
! l, a3 z  o; A, n: ]1 G  k. ?. m
PHP
5 Q' ], c6 i% x3 xUPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1
/ A0 M! G" U8 ^& Z. }3 u或者新增一个超级管理员账号如下SQL,然后再修改密码:$ K" @" \9 w  _% s( B
, a8 g  n# i: [  _
账号amdin00
# u3 @  J; a$ P- ~$ s* z
0 c: F. F  \' t' t% {% C0 y密码admin
+ g9 r1 a! _! [7 n
+ |, ^9 D. B3 y) L# J' w7 fPHP$ j1 Z- r7 I, ~' X, u7 B4 h
INSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES
! p( ^6 F% w+ U' Z( q) R, q2 r1 G(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');
: f1 n" L; m3 E& _3 s+ R3 p方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。9 ~& M  Q- w, R* V( O1 w) O7 K3 F

( e: J- s" j' t% j9 }: \这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。
0 D) ~* N. q8 x; O- c
% k/ h3 {: `8 L" X$ {J`~}2_3CPV5UBB0ZGXU4PMQ.png
  x8 g; G" ?$ ]0 b: e4 R: a( ?  U9 }
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-19 18:45 , Processed in 0.088380 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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