找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2914|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:+ i: G* F9 n4 p. }3 W/ B5 r8 K+ |

8 n) w( P! ]: R2 Z, c出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)1 m3 T$ M* e( ?
商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)7 K' m. O% D% X/ W' L
后台登录不跳转(原因是session存储目录没有写入权限)
+ |+ q6 o# w+ v( Y0 n* V  a后台无法上传图片(原因是图片目录没有读写权限)
" t" U) c* K2 \0 y5 J列表页无法显示(原因是渲染路径拼写错误)
3 k4 ~1 j) k) @8 |$ Z) a注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6
' a$ |: U3 o( u  t7 H8 [6 k0 S& K* N+ ?/ V; I
解决办法, Q% O' K8 F8 D/ e5 f. x+ W9 e( w
1. 缺少php-xml扩展
) c/ B4 n% @# _5 K1 H根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:
  P& Y" u8 [9 A3 k0 G
% f. B8 P* b. |9 y( Pyum install -y php56w-xml
$ w6 W$ @" C- n' t17 `1 K6 v1 `$ r3 k8 o' V# Z2 D
安装完成后记得要重启php-fpm进程:: `0 o, F9 ]# u$ n! P4 |

+ c2 u5 _# C, f  g# Yservice php-fpm restart2 m6 ~8 A1 k; p1 P" e
17 }: @; |, u/ \, J2 j/ E: N
重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。
4 T) H/ ^# u0 }3 K1 ?7 \+ ?, H, ?+ t! Q1 a6 w% e( ~
2. 商品图片无法显示% _. V3 p; Y, B: l, R  v0 ~% P# E+ w
用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:
3 O, a6 d2 L; D0 ^, u1 f; C* j7 `3 ~/ Y
查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;
  H: ?7 R  |. Y: x# h5 m! ]: X查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错
1 g* m4 {# i& f, U所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。
8 ]% I' u- v8 \' H7 M; `2 Z再次打开网页,图片已经可以正常显示。
3 ~) k( `" n8 f% h  |, U9 Z# v6 D# w% L1 x: L  p! g: T. U$ W
3. 后台登录不跳转; \" c  d+ O, X
后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。# N7 C3 v6 C6 e, ?; w) |
" c' B6 w% Z# S$ \. i
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)% `8 \' S7 _9 d& y' k' X& R
16 D7 J$ _2 m7 T+ w& w0 {
找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可
5 ^3 |% L/ k3 A1 H+ u2 M1 a8 R9 O5 P0 Q9 y
# chmod 755 session/" M6 M5 a+ g- Z: \
1" E+ M& V. b! _; b
至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。
( q! n) m& y/ f
# W. O/ D! Q3 s% N3 [3 d- Z! \4. 后台无法上传图片  L/ v3 ?8 k6 n$ u+ i. _3 w) d
检查Nginx日志发现的问题是:
, Q  l/ ^: ~7 _: a" {* P1 Z. Z$ S! X  ^+ S4 U$ M0 j, J' Z5 y
[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)
' x& m& v/ y$ x$ }1
$ O3 m8 u& b2 ]. z- x9 l# V此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。
, C, J  x+ j1 C" A) ]! `9 k7 c, p* N  K2 Q6 R$ z
解决路径问题,只是其一,上传时仍然会提示如下错误:+ D9 H- c: K( `% a- d8 k
6 m, U. @9 I% d/ E
It was not possible to complete the request due to file system permission restrictions.
0 W! W, f; A: v+ t2 p% w1
! b5 r! j. Q5 n+ P) p; F7 h7 N这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:
4 X# X6 I# h3 w7 a! B8 i' G1 V) I1 [# A; _1 `
// 到网站根目录为image及其子目录catalog提权到777& [! Z, x; u5 C6 @" C" U8 ^' x# e
//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)5 S4 O; _1 S+ V5 a4 j
chmod 777 image;9 l! W# X% @8 m. _4 U: p. Y3 c' n- P
chmod 777 image/catalog( O  [  @9 j" c" h+ F

  x0 d, M  W! n  t// 如果 catalog下存在子目录还需要将子目录一并提权
* V* a  ?+ I% d/ G// 列出子目录( Q$ i! c$ ~7 ^% E/ l8 }; D0 B
cd  /image/catalog && ls -F | grep '/$'4 t" ~! X/ F0 ~: v) N
chmod 777 1/  10/  2/ 22/  - |4 _* p  T1 Z8 h* V; W  A6 l
8 |8 J6 W0 g) f+ m$ E4 d. q
// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)0 M9 {. i% }6 v8 J$ j
cd /image/cache/catalog && ls -F | grep '/$'
0 ~1 V. G; h% b$ E4 @chmod 777 1/  10/  2/ 22/  7 X5 F9 C# E! G3 c/ e2 y" O' a, |

2 H( H+ E2 d8 u1 P. R1
' P- u! Q# V( N; v$ r2, e# {, U% t- g2 x
38 \! v( \/ ?! }/ T# f- k8 ?0 r- ^8 Z2 a6 E
4: q+ x+ e- x: x9 B# ]
5; R) h+ q) v5 e# i
6
' U' S# F- `; E1 p7
; n1 r. R' t8 z% G; B8
* y& A6 _' Y0 T  p/ F: B9  _) p5 V% _. I/ y" \& j! _8 M# m
10# Z8 X$ D7 x8 t8 Y
118 _! H4 P; ]0 L+ B
12
( T3 h4 \- h6 P" E7 B134 N  m# M2 ?3 Q0 R# n
14
: _4 X# d$ `- S! A回到后台检查,OK,可以正常上传了。( l( m1 h" h: I- f
如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查" i8 O+ g: m; T! ]; J2 S' \
& {) E4 u$ d& I  r" j3 e) }5 e) H. f9 U
5. 列表页无法显示
; m4 P% g8 _, p' U/ I控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。8 N3 z- M: P% E, L) ?3 q$ C0 q$ Z

9 h0 b% A+ j6 R8 S6 t原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382
7 e- n, ^, i& p* S+ b$ c/ ?
8 A8 U; g+ }: g
回复

使用道具 举报

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

' v" h3 c: e+ a6 {方法一:通过调换域名修正管理员密码。& b3 M$ C$ L& W  R
5 Z* a" t9 G( P& y9 e
这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。* h7 ?$ u! D) {: M: \0 W! A
! T4 x( _6 i, E
方法二:通过修正数据库来修改密码。
9 A$ B# ?( a( c- d8 g% \0 F7 E9 y" w- G; l- f6 ?
这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。
" Y2 k; ~, g! ^4 W" V$ e5 Z
0 Z3 s- Z. N4 h0 K方法三:直接应用特定网址修正密码。8 a2 ^. L3 w+ n
( U' i* o8 ^6 o5 i$ Z8 `9 V& }' q
可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。  y3 z5 p/ k* I5 _, ~
7 m& L3 T( i4 o; h/ p
以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。* M0 D! [, F4 H0 K+ o0 m6 A
" s; h  b$ i6 r
总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。$ V/ \+ P' H% j4 e( ^# |$ \! c. Y
. v$ B9 B5 F" S8 K
(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。! l. k# y' c* g4 r8 W  n
如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。
* `2 |) \5 k3 ^; Z" t方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。  T9 I. Z* h% y" N5 s5 c9 H

& L; B4 c! @% G$ B, U  Y( fPHP
6 p0 Z" A. N3 l  hUPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=17 u6 `3 N  a6 Z
或者新增一个超级管理员账号如下SQL,然后再修改密码:
! Q. W# q- R1 C+ j2 {) N
- T6 V0 E1 u% @7 j) L$ E5 e5 X9 X( e账号amdin00
  }7 Y% ^# y! N/ J
3 M' a0 F$ L! h# G! @3 x* k密码admin
4 Q$ s  [4 n& i* \7 {
- E, u7 G4 P3 a0 tPHP
+ P" `! k- F! C9 z; }4 WINSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES
: |1 n& m5 i4 M* F" Q(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');4 O! J+ ]" H# L3 ^% R
方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。9 e7 i: a  P: Z: {

( [0 @  g# z7 U- q; T- _; A! l0 ]1 X9 R! U7 ~这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。, o& r4 J8 A2 H0 e6 [) i
$ M/ I8 f2 E5 K& [4 x0 t
J`~}2_3CPV5UBB0ZGXU4PMQ.png
: e4 e3 Y0 x! I
- H2 A: ^/ _& t/ a7 i
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-6 19:23 , Processed in 0.135549 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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