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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2354|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:
# J* A9 q9 x+ Q! D0 l( w
+ u) }$ K, u! i% [$ m' [出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)
  Q: F. d3 j* `& j$ g9 \" ?商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)
  a. |+ K, p2 }# b后台登录不跳转(原因是session存储目录没有写入权限). ^% [3 n& @, r9 U
后台无法上传图片(原因是图片目录没有读写权限)
6 c) j. j- s/ A" h  e列表页无法显示(原因是渲染路径拼写错误)
7 q- Q, [& m  \, m注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6
6 H; N5 {! ?8 x& [# h+ j9 c9 ^: H/ |" z1 N: G' f, x5 B8 B5 j2 K
解决办法
* x1 }0 ^5 U6 t1 X6 n2 ~1. 缺少php-xml扩展  A3 T' f+ k4 }+ @6 j1 M
根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:
) T9 K# L8 ^- I8 y% q- A- p* W  q  Z% o" {4 L7 }, O1 V
yum install -y php56w-xml
) i% ]7 U" [1 x2 M& ]" N3 v$ l: A1
7 z( b1 E. D5 j4 A" ?( f安装完成后记得要重启php-fpm进程:% q. |; {7 a1 n5 H7 _
1 w( |$ d: o" ^+ z( E* d) `0 e7 n
service php-fpm restart
0 w. V1 w# r8 W5 }# M: g! v1
/ ^" l" y- l$ \. i% u- ~0 U7 t重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。6 m- _8 v5 e3 N, |( v' D

' b2 ~( l) |; l5 M. w% q* n) w2. 商品图片无法显示4 B# B+ ~. N9 [& [" X9 R. ^& A' y" M
用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:
  O7 C1 ?9 X- Z$ |# m+ }8 I4 y6 l5 X7 D( h! f. n( d2 O
查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;6 w8 r. {0 r4 C; ^
查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错
( E& K1 x4 d9 b8 Q1 B4 S! D所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。; Z" H& C/ x) O  }7 b& r
再次打开网页,图片已经可以正常显示。
6 i: Q! c( e" x5 _% J! E  [# ?$ j8 s1 c5 y; m
3. 后台登录不跳转
+ Z0 e5 b4 ]6 o( k后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。
# f* C8 y  |, k5 }& h  o; t5 @, Q/ V8 F# \0 }4 X
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)
- ]4 W, D* _7 k. G6 r8 b1
" J3 s) [9 t. L8 K" I# m找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可
* L' b3 A8 x/ {* I& b0 j, x/ c
- d5 \2 f8 Y% c& M: h: V# chmod 755 session/2 L* S" [" I" @$ U# V
1
$ ~7 x3 |4 o1 m& z; v4 A  r至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。
! a9 W& J2 \( A
; e8 o/ J3 {4 H5 h9 u  N+ \* g4. 后台无法上传图片
' b/ Z- z3 l) i, M/ ^检查Nginx日志发现的问题是:
: j0 U" a# C1 e9 r
" Q4 }7 l9 u' k' m5 J[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)3 X+ q; D; ~: Q% V, O
1
$ P& ]1 ]4 ]* }1 C+ E3 q此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。
' T4 u* q8 Y1 {( O
0 ^( X5 g1 ]) Q# \4 Z/ k解决路径问题,只是其一,上传时仍然会提示如下错误:
; U+ L7 U9 w, m* ?" v" o  u9 f" k+ a3 `3 b6 W
It was not possible to complete the request due to file system permission restrictions.
0 t0 G) z2 g0 c9 r8 x: z1& G- d) Z8 a/ k! p5 {3 ]4 f: C
这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:* m, d3 r- U  r% m6 n

0 }: I, P* O# ]4 l! {// 到网站根目录为image及其子目录catalog提权到777- V% O5 |/ a+ h6 Q$ k
//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)
; G( y6 `. x2 A0 ~2 [4 |  D& u7 Lchmod 777 image;( V$ @3 M5 X1 m: x  [
chmod 777 image/catalog- J7 U$ {9 F  o/ r

8 [/ w: |- A# T# n  z3 T( @// 如果 catalog下存在子目录还需要将子目录一并提权% W# P  s! W) D( F
// 列出子目录6 ~+ o7 @3 P: X- [  {( Z
cd  /image/catalog && ls -F | grep '/$'% {2 F3 l* g, |8 j# v
chmod 777 1/  10/  2/ 22/  $ X5 ~, E! s/ [- |# w

. Q' S6 J9 k- \8 N3 t) p/ x// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)# o" f& T1 f4 U  n- z/ z5 b
cd /image/cache/catalog && ls -F | grep '/$'1 }6 |! [, `0 ]$ }  O
chmod 777 1/  10/  2/ 22/  3 R' O( V+ P9 p( z" L6 s

7 @" i- k5 x  i& l& j5 K1
" A: K7 X* p, s2 S% p' ?$ ?23 T5 _$ ^" H* U' {, h
3( C; [' t4 t' x" x$ U+ P
4
+ C' n' h/ y: f8 U5# V' W+ u- T3 }# q6 ~. e
6
0 V5 m; E: M: l9 }/ |7
9 z5 _' P0 h/ {$ F8  M4 W& b* n5 G& P  E
9
; I6 r1 w% C  K10
4 U0 b$ i! J- `: e: v11( @& h8 J2 O; I+ q- l
12- E' T2 Z5 I0 y- |5 x
13
+ @7 L8 _8 W6 N2 n9 t. M+ y: s14: W9 g* \0 r# \0 C8 g( x
回到后台检查,OK,可以正常上传了。9 T% S: c3 K; @- m$ Q; A, a
如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查
! i, D+ I0 T8 [5 Q2 y
- M. v3 I1 g" J+ t/ D6 u- g3 `4 L5. 列表页无法显示+ x: Y! O' M5 W8 n3 |! `  F
控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。+ d0 I7 _6 E& A8 |" O! @8 s
! t" i7 t+ U9 x  d- G
原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382
0 k' X: j6 ~, q% w
, r' B" d3 q; T* p, u7 ^) i
回复

使用道具 举报

 楼主| 发表于 2023-10-11 20:28:52 | 显示全部楼层
Opencart体系是近几年逐渐兴起的电子商务网站平台。其安装便利、功能强大、操作简便,支持多国语言、货币和多店铺,因此备受跨境电商卖家推崇。然而,有时候商家可能会忘记管理员密码,尽管Opencart平台体系提供了默认找回密码功能,但有些情况下用户可能无法通过账户或邮件系统进行密码找回。那么在这种情况下,该如何修正Opencart体系的管理员密码呢?下面将简要介绍三种可行的方法。office-3295556_960_720.jpg
9 g5 p0 ~( R. z# ^2 R4 @' S7 p2 F7 P8 c
方法一:通过调换域名修正管理员密码。8 b2 U& ^% M$ w: @( R, Y
+ R  J; G. |" |# j! x5 n; ^
这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。  k4 v6 o% c; Q2 ?% Z) t
( {' G- o( l7 }
方法二:通过修正数据库来修改密码。$ H" E2 J- V3 M9 a! k, L7 D/ ^
" ]0 ~' k# G, b( c3 ]: f  h
这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。
9 k9 K3 y$ U* ?, c+ u; Y1 d! e; ]- A$ v
方法三:直接应用特定网址修正密码。
: U* Q* u# D! D( f9 C2 R; [( O5 B6 ]( l$ M. D! f$ d
可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。! C; {# {2 j4 n" `7 a; g# f' p" Z: m
0 s  j9 T2 I$ X
以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。
6 [5 M' B2 e( U7 O) `! y6 }% }
6 N5 R4 ?1 L1 W& W. x% v总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。
5 f. {$ X. x$ o8 Y5 R; D. \5 r3 N" v1 F
(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。0 ?) g* b. ^) ~
如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。
( F0 g7 j6 A- a, v/ y3 f方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。
8 |7 q& h7 t+ f$ @
9 i. T. \# ], `& |, s! R& k1 \5 bPHP( o  e- I1 K, L6 b& z4 C
UPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1
1 m1 ]& ^" k& T& `  ^" G或者新增一个超级管理员账号如下SQL,然后再修改密码:# k1 V  J6 v9 N' |) C
1 w7 m( M$ }5 H+ Y& ^
账号amdin000 a2 P$ v, d' w6 q8 f( D/ |
) V4 n# u  z5 r! X% C# p
密码admin
7 ~7 z- s) v( @) O( |7 K! E
- w. _, S) \: BPHP2 [2 f( t  k8 o3 ~
INSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES
0 _6 ^. Y0 |) {6 h5 G, ~" |(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');
: m3 d  `' ]6 ^9 P8 _3 I; k0 p方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。
  l/ u% h4 u) S8 @6 o# j7 x( _! ?! B# E
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。8 N4 `0 K9 N" q+ m

0 r8 S: ]) Q( E# YJ`~}2_3CPV5UBB0ZGXU4PMQ.png8 B, Y; J, g" K7 l$ l0 a7 _& H  n

3 g1 l6 @& q& w% P# D- E2 o
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-20 00:40 , Processed in 0.113297 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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