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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2566|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:
4 l# l; d9 S6 Q0 s; e; p; K4 P  H& I: w) _
出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)
! t5 N4 Z0 [+ n3 X. _5 ]$ g! |商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)
1 \; K0 [6 q, }+ i后台登录不跳转(原因是session存储目录没有写入权限)
: x: b+ F6 J' S后台无法上传图片(原因是图片目录没有读写权限)
: W; _& o" f. n3 ~7 m6 N7 t$ a列表页无法显示(原因是渲染路径拼写错误)5 d$ c" ]" \( K  n7 u
注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6) ^3 x6 c( n- Z# I* m

3 A7 A( v% r0 m" e5 O$ s0 |" G# u解决办法
, H+ w- ]( \" {+ y) d1. 缺少php-xml扩展
8 ]) ^* Z# ~* Z( l2 Q根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:
7 s9 z& T( x* E5 Y7 ~% B) b( \" Z, S8 n
yum install -y php56w-xml: h) s2 L) |3 e# |( `( U
1
0 W/ a$ w2 E! ]! V9 C" _安装完成后记得要重启php-fpm进程:
0 V7 P# A6 n% K; w4 O* U6 J% n3 y' U2 [) \/ u
service php-fpm restart
6 b( n  n5 _1 z1) S! H4 w; [3 G4 q2 q! r2 j
重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。
5 U6 i9 u6 {7 Q6 K0 F  Z+ |) N% a- t# e) l9 b1 R4 |
2. 商品图片无法显示9 V/ C# c( s# v& W( O
用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:
. W4 ^5 }- c/ V) J% i  R
% o, k& {) P5 H7 D5 R/ E3 T; c查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;
4 ^( [+ E+ ~8 u查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错
. [: _. R) m  d' @+ Z$ W所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。
( }) d+ J7 ]3 s( N再次打开网页,图片已经可以正常显示。2 c6 E2 i" c) A  f6 ?1 R% a- T
  t' C3 L5 K! U& M
3. 后台登录不跳转
2 g+ Z# f' G3 W9 F后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。
) y1 w* G: ?$ [+ r/ \1 R' e/ s" b0 l9 O
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)
- d! p8 R4 U& U1 d/ r/ B1( `4 k1 G9 N, V# C$ h+ L/ |. G1 P
找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可
7 Z4 V0 t" I0 R" F! n, [% A. V* [* y! z4 P& p
# chmod 755 session/- p- _+ F1 _6 W* X5 b
1' C" @- T! \/ J1 l
至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。7 ~& \) M# a# O. h
5 R  s( R) ?/ r& ^0 V$ f" F
4. 后台无法上传图片* e) c5 o& k- C$ @" G% V* n
检查Nginx日志发现的问题是:
) ~* M- K# x  @5 y0 O+ e6 a
$ @1 o2 |/ y4 J" E; p. G[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)
% h9 F( V) J- d, v9 \) C1 ^& f/ @1
+ M" l  G6 }: Y5 X; `4 \此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。
: m) H0 O! e+ J6 ~1 V+ w6 n8 i3 E% O+ G! |' V4 g: T2 ?! G* B
解决路径问题,只是其一,上传时仍然会提示如下错误:4 ~2 ]6 `. z& X6 }- ?: z' F% |  G

' p2 E7 x; h$ s  w" NIt was not possible to complete the request due to file system permission restrictions.% G' L: _0 r2 Q8 V% I' e
1
, B4 S0 l$ I8 L( D这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:
. b: z* X) t- J) @
. s6 X2 K$ O' `- Y  w// 到网站根目录为image及其子目录catalog提权到777! @# t9 {2 c$ t+ c& [& {# L
//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)% S: h: \: _) C* n& @
chmod 777 image;0 h# l* m6 O! [8 u
chmod 777 image/catalog+ t8 T0 b' }1 L- {

5 {+ i8 j  v& B! K, m# ]6 j2 _( m// 如果 catalog下存在子目录还需要将子目录一并提权
9 X- Q& C* \9 B; A$ L# \- k// 列出子目录
' h: z" G+ n' z- }% Kcd  /image/catalog && ls -F | grep '/$'
+ z$ }7 L% l( L$ [: @chmod 777 1/  10/  2/ 22/  " [2 y. j. @2 v; ]" r" o) ^
- m- V6 Z% ]- d3 a  R. ~
// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)
( |( L3 q# p) N. [7 F7 y# r3 t8 ycd /image/cache/catalog && ls -F | grep '/$'
: v9 X' B$ b) t, L7 h& I% Echmod 777 1/  10/  2/ 22/  
( u  R2 s4 Z7 x- s1 z% C8 C/ n3 y8 `7 ^7 k  `; V
1( a- v; ~+ g  J& P7 L$ ^6 F
2
' u* m) c' }) }# d3
: s: z# ^( `2 c& E" r* C- _* p4
9 ?( R. y& r5 j. o- o' z5
; h8 Z2 N# G4 @6 }* i' X1 m6
5 p8 P9 g) A& C. ^7& b7 U* Y- K: ^7 u
8
. H  C- T* s; T96 j2 W1 [, M* J$ d; A- Y
10! j8 a8 P+ k- W5 H9 ~0 \+ K
111 E" d% h8 x+ v1 @9 m
124 }# V3 \- S0 W! _
133 p( }# [7 X# r8 i, {1 z& [6 R
14
( k9 l0 T2 J( t2 K" z回到后台检查,OK,可以正常上传了。8 K$ I/ ?3 X* Y5 }
如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查0 @! ], R  P9 \2 ]# g9 X2 L

! A2 t/ i6 O/ L8 s+ B8 G3 J- i5. 列表页无法显示
  a: ~* U0 S2 W# l7 N控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。/ C, j3 O- E3 g1 G

% W7 s1 m8 I; i4 H, ]0 j) J原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382' T* _/ ?- s7 r1 H5 S
7 u6 e; [3 {5 {0 x, q  o* E! r
回复

使用道具 举报

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

8 t# u8 t3 Z! L) B方法一:通过调换域名修正管理员密码。
* n: k; U7 {# u8 @* ^& t2 ^( `8 D+ H1 B/ q$ n& ~/ Y
这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。
+ e" _; L# `. N" n1 Q" F
) K# u. ^% r" C. v; i# J方法二:通过修正数据库来修改密码。
7 }" U$ U5 y! j( Q  y" U
0 X. S% K. a  B) K* `: N这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。
& a. D5 a6 \9 }/ n
# B$ g5 ]. V! \7 a, S) T+ C方法三:直接应用特定网址修正密码。
6 N+ \  m' Z4 ^" @$ u& ?. S  r4 x8 g8 p$ f8 L4 j6 `( A6 _" k
可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。' Q1 Z  }6 y& J# k) d) t
! }4 _2 Z( \' t
以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。
! F% |! S7 [3 f- ~
: b% D7 |6 h4 _) B; }8 _总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。2 V  P! c7 B- U/ b* R, E

' q/ u4 S. H: h& m(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。  o0 O: H; k" a  T2 v6 _" c% k4 T
如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。
: J4 F( v3 o1 Y! F0 b方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。; c$ _: P0 q7 {' ^: M
& _4 E3 v" g! v( z
PHP8 R: B+ t0 t. @, Z) y* F
UPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1! m6 {9 C' s1 b+ |. w
或者新增一个超级管理员账号如下SQL,然后再修改密码:
) a( O0 S. {2 `# d" g
/ Y5 m6 _7 w; D; y; A; F4 I8 J账号amdin004 x; }! r3 o, _& \) N1 }& s/ ?

. n; H8 @. }( M; d+ j3 Z# w& n# F密码admin8 r" n8 L! B. ~& X7 @

, u2 X* J0 Y0 r* FPHP
+ g" \& Y$ u/ a" k0 CINSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES7 v3 \! F% j8 R" k0 ]
(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');2 Y5 Z( ]+ X5 E" Y5 ?: O
方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。( m. @  E8 D  P$ B0 S0 s; S' ~& c
, ~0 R0 n  N- I: c8 X( }
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。
* h( r8 {4 n  c+ V( y1 \3 ]/ x- v5 e: ]9 e% C6 J$ ~0 D% n2 u
J`~}2_3CPV5UBB0ZGXU4PMQ.png4 t& y* r. |% g' ?# J! O
" T5 v3 x2 v) M( t
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 08:50 , Processed in 0.099403 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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