找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2807|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:9 b. q, X. Z5 Y' f' z( J7 s+ p) V
4 w: l: s% E7 {: j; `% h
出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)
0 n8 a6 H7 y4 \7 x- @商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)
( s" B9 c/ j0 Q# H后台登录不跳转(原因是session存储目录没有写入权限): Z) N# p6 B0 {# `6 U+ s
后台无法上传图片(原因是图片目录没有读写权限)
2 j$ D* w/ Q" a列表页无法显示(原因是渲染路径拼写错误)
0 o# I' S7 O2 _1 ]% @注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6# ?7 v% l" R/ b/ Y: o$ K5 _

$ e" N+ X% T& l: X解决办法& Q; g' \8 L! k, W9 P$ G' E' b
1. 缺少php-xml扩展" f( y% ^- J0 X4 ]* u/ k
根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:( ]& L" H  W. C7 E2 y$ u% z

) c% {: P' Y1 n- d0 oyum install -y php56w-xml
% y2 y4 d6 q3 r+ h. i; d5 h, X14 X7 x* |" i- T0 b& l% h$ X
安装完成后记得要重启php-fpm进程:
  J' `- w' {/ o. q( U
0 L0 P6 u1 T( ]7 h& [- Y. |/ n5 qservice php-fpm restart
4 e# F8 b7 ^; p/ l( Y  N- S+ w1& H. n9 o& o% o
重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。
6 Z( C+ ^2 k% X0 O# i& X% S9 J9 U
) k3 q3 R5 V2 ]2. 商品图片无法显示1 {! h% F8 L, r! N# f% n" n) N
用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:
5 Q# n+ u% M3 P* a6 t: ^, m  F; R/ }: B! g
查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;
/ M+ _: q* ~$ @4 b4 @查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错
: R# ?' ]9 Q4 x+ `# |) y$ h所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。
, S( ^/ R; N% m! v4 W) m再次打开网页,图片已经可以正常显示。* t# L  U8 p$ t9 u/ y' u1 F

* \; ~1 i& m5 |' d7 q; B" x3. 后台登录不跳转
6 Q! v3 G  |2 C) c后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。
% \! b4 `+ w. G( c# ^' k, j4 @' |# l, O2 U* Z9 D% @" O4 n  l- c9 W6 s
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)# Y8 j  G/ e, N4 g
1
& `; D7 `6 V. P, Y. r  x找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可& O( c' I! d+ q* `' N
+ r  f8 }) ~+ T; `0 l
# chmod 755 session/
- v7 p) l0 U6 J  T% _4 r16 [3 G3 q# u" S) C- ~* L
至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。
1 \( p) d5 o2 F' v6 n
" z/ V! K! X7 M4. 后台无法上传图片
' ~2 z5 w6 z0 U8 f检查Nginx日志发现的问题是:
5 o8 y4 s) o; W1 W0 k! r4 a* q6 V5 X9 I3 g- V, Q* K
[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)
9 F( |; N$ Y0 r: q) @16 G% Z2 y0 a# d8 h% Y
此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。
1 a2 n- W8 z4 ?4 x2 K
8 ]- u/ X- i: y9 _解决路径问题,只是其一,上传时仍然会提示如下错误:5 ^% V+ Z; Q1 d. w. o/ H8 z" O
, ^/ ^. \+ Z- Y" c* c; M
It was not possible to complete the request due to file system permission restrictions.' [5 a; Y2 o1 E, g  }/ Z
1
* j- Q( ~) w# u- J这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:
. D: p: R- r) e0 ]' h% Z- m8 a5 b, l, b+ K6 h6 D4 u
// 到网站根目录为image及其子目录catalog提权到777
0 G! Y1 q) }6 T//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)
* F) \6 o. w3 P7 i! D& Cchmod 777 image;
% \0 N" n5 v3 b* [# gchmod 777 image/catalog  e' s" V  a' U; k  ?) h. U
! M5 P- G7 V4 t; L1 ?
// 如果 catalog下存在子目录还需要将子目录一并提权% b1 ^9 `/ Q8 N) _9 @
// 列出子目录
7 E6 n, u7 _1 R; Z( Ecd  /image/catalog && ls -F | grep '/$'. ~' }3 O$ x0 ?2 K4 K
chmod 777 1/  10/  2/ 22/  8 U9 ^: A8 E. C! _7 P- ~

+ r/ A* t6 k- @, X// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)
4 ^/ T  z! R6 s; d- O# Dcd /image/cache/catalog && ls -F | grep '/$'
7 N) ^- I8 ~1 J# {: C: o' Z* jchmod 777 1/  10/  2/ 22/  
" i, P# `4 ^( H, {
/ b% v7 [: ?$ ?& r3 `1
$ ~, w4 Y2 Z. J. ~  [2
; ?/ _6 B/ ]9 y. m% [8 s4 x3
2 `' Q$ U1 W/ S+ r, t. L4
# i. L9 f9 Y+ b- ~7 {2 q5
  X* s3 Z9 \1 p, s+ J' Y) T6
* V7 h# ]) k0 u2 p; T3 R7
! [2 k6 D$ L. C- p. N8
2 n% H2 l, _/ |9! m- O/ M+ w) V
10
* r% D# E7 p4 R' Z* _: L11$ X# `  T& X& ?9 X1 i) n, s. O% t) @
12
3 k: h- ~5 b1 o13
/ z+ a" }% b7 t* L6 ^& t14
3 @# d% H3 V9 {回到后台检查,OK,可以正常上传了。
3 b0 Y. U8 ^5 @. Q) e如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查0 c7 d( z( Z6 E; C

- {' @# y, p' d, F+ z# d5. 列表页无法显示
6 A3 k) G0 o' Z) b# F9 l( X' H控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。
5 `6 s0 e4 M& w8 l, D8 k$ Y5 Z  Z0 K. s) q" d0 R
原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382
) @% h; U9 ?) l) M9 a5 V  W$ n2 p& _  t" x$ p& \
回复

使用道具 举报

 楼主| 发表于 2023-10-11 20:28:52 | 显示全部楼层
Opencart体系是近几年逐渐兴起的电子商务网站平台。其安装便利、功能强大、操作简便,支持多国语言、货币和多店铺,因此备受跨境电商卖家推崇。然而,有时候商家可能会忘记管理员密码,尽管Opencart平台体系提供了默认找回密码功能,但有些情况下用户可能无法通过账户或邮件系统进行密码找回。那么在这种情况下,该如何修正Opencart体系的管理员密码呢?下面将简要介绍三种可行的方法。office-3295556_960_720.jpg
) g$ j# C- W. h  L1 c
" ~/ t. ^$ D( S9 O6 C7 |! S- K- S. d方法一:通过调换域名修正管理员密码。
0 b- C* O& J) M! f8 c
/ d. F2 r- t5 p* V* q这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。; P% Q. G7 p1 j4 x  a5 z6 N( `
1 N( H9 a/ x  l' \2 C
方法二:通过修正数据库来修改密码。! \% Q1 V& H' T7 i
" J) d0 X; M+ I2 i4 c( U8 R# c! b  A
这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。
+ K; v" v* g, [; w  P# b9 y  y7 z7 c
方法三:直接应用特定网址修正密码。
5 m: w5 L% j% E0 G( ]
5 ^# S0 I6 d, l9 F: s: f/ @) \/ @可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。- [0 ?( D4 w" s$ z

7 o( l: o  }! ^以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。  |( g8 x' k3 o, w0 A& K7 ~

, d5 P: I: K$ q) G1 r总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。0 P  t; s7 e7 q
" y! l, U& A3 a3 ^
(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。
4 R+ A3 o* H, X& [- Q如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。1 f, G2 A; T) ]; ~# q; J
方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。2 a4 `) M& Z9 Q# H9 G* J, W
+ P; P2 m& A) Z! q
PHP0 |( X5 S, C# ~. ]& p
UPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1  x( d! d! J" k
或者新增一个超级管理员账号如下SQL,然后再修改密码:
+ ]# i8 P- @, P( n. J. W1 Q6 V% u5 k( m5 ^8 ~! W2 l  ?
账号amdin00, y5 A0 t8 d% s7 b. j
! l" A: J* U6 R  P$ ?+ d
密码admin
- w( p0 [$ O& C  G" z& ^1 Y. V& X6 z
PHP% D6 z) n' W* G6 ?! z; J
INSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES
; R7 ^( ?3 i8 J. X; Q# a0 K8 A(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', '[email protected]', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');* h% X8 `4 j$ b( d  |/ `
方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。
5 r' \. g- E- q4 b. h  k8 w- w$ V; i% b
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。- y. S* M, z% B( Y8 n
/ t9 o+ \. l6 A+ b4 T
J`~}2_3CPV5UBB0ZGXU4PMQ.png
8 Q0 {, [/ ^5 {* e( u4 J  W6 J' b7 i& t2 @
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-29 17:50 , Processed in 0.099405 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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