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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2567|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:
8 a3 Z8 O& l) S* h: B3 z0 K. e; f# Z, o$ Z! z
出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)' q& v6 M" T0 X: P- B" e
商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)6 z7 d5 j3 m* F# b% k! z
后台登录不跳转(原因是session存储目录没有写入权限)
+ Z1 b# Q+ r! c% b后台无法上传图片(原因是图片目录没有读写权限)
" V5 `; ^" K; Y0 D" X列表页无法显示(原因是渲染路径拼写错误)
' Y4 m& n8 M$ x' t& |注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.69 u# E. }/ q* U& I% D

; o0 \+ {  Q& @  m3 p解决办法
9 w/ z' f  ?. T1 V3 J' @! O1 M* w1. 缺少php-xml扩展! H8 t2 O9 k3 l# \$ Q! q( o- f3 f
根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:
3 P, M4 ]  `- H3 F' O. Q2 p+ `3 P2 v" A" {: k* z
yum install -y php56w-xml* X" [* R% D8 b4 F& C: G2 j
1( ?! ?" v% j/ }$ y) t/ L
安装完成后记得要重启php-fpm进程:: G/ I; w" b" y  K8 S

+ p. J- f: \  Y  W- ^4 c3 Xservice php-fpm restart8 s* v7 n0 _8 I
1
8 t, J1 z! l0 ?+ A重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。& g1 Q" |8 L: ?7 G5 I! g/ |. H; \
% I: L2 ~4 L4 L; ~3 `! d6 p% J
2. 商品图片无法显示6 D  E4 w' F% Z6 [( C
用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:
5 `4 y! P- \8 r! c. y9 v
$ M/ p; h- z4 v查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;
0 X% ?1 z+ R+ }/ P查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错' H& w: w1 s  m: l+ _$ X$ I, L0 Y6 u. `0 o
所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。
" d/ ?/ A4 |3 C4 H再次打开网页,图片已经可以正常显示。
- X  U/ H2 r5 g8 j5 [3 K
5 S3 ?. Q& b! \9 W; P  p" F3. 后台登录不跳转, l& S) r! h0 Y2 \
后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。
& z: G4 I' z- p' Y5 u9 u+ p+ v& ?; a5 G( o
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)
0 _$ @+ a5 X4 v6 v  D1
3 d8 G: a' U! @; G找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可1 G+ F+ P9 A6 y4 w1 g( {8 x

7 p- o" H2 ^8 X; ]# chmod 755 session/0 B4 V0 I7 d$ A. u: G9 ?- M: w
1% r5 H: z2 j* u3 M' Z/ V
至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。/ J7 X! V3 X$ I8 i+ m
9 g2 f; C3 m) @* D  }, p
4. 后台无法上传图片6 v3 h, o' ~+ X  w4 s' R
检查Nginx日志发现的问题是:
0 G7 m: y' L) t+ x! \/ a3 i1 o7 T1 q2 y
[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)
! l9 ^% C: r7 f$ t: ?1' V" I( a, E& H* V9 Y* n
此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。7 C7 ?5 ?; M% Z# _3 J
4 `* R+ C/ t8 b% y& I% ~  _; ^
解决路径问题,只是其一,上传时仍然会提示如下错误:
4 M$ q* s1 s0 [% Y% k0 Y; b
2 h+ |) C& J% ?: `# xIt was not possible to complete the request due to file system permission restrictions.
. @3 \2 j/ Y( q0 C- N8 f- ~1 X9 a1
' Q3 D3 t) v$ Y# @. s/ z8 c这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:4 V  E% W% r- R

/ e  @+ m$ _3 ?  H! m9 o) n6 T// 到网站根目录为image及其子目录catalog提权到777
1 M- M1 n, Y! \2 o( M//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)
, m; G4 m# Q# a3 F- Q4 J- Wchmod 777 image;% r) |( h: K: Q7 j1 }8 |$ B
chmod 777 image/catalog
  y& r" c: n- I* I* F
7 N, g; x# `! O% c' f  b6 Z' h* h$ I// 如果 catalog下存在子目录还需要将子目录一并提权
3 O2 N& S+ k: u, f; r// 列出子目录, T5 A( J( q8 _8 m* K* M
cd  /image/catalog && ls -F | grep '/$'
( c4 q) u  i& k% `chmod 777 1/  10/  2/ 22/  + k( Q# e; P: B2 I, j. W: T* z2 w5 _
* x% o6 b" P9 {% ~/ j
// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)
$ p- u7 o0 L1 M) ]- |$ vcd /image/cache/catalog && ls -F | grep '/$'
' @5 f3 v6 P2 ^5 V9 mchmod 777 1/  10/  2/ 22/  , D2 M/ d+ o% O. q0 E( b5 k

: y3 ~# L9 \# a* s, N1
5 }# u, |) g8 A  v2" Y# J( g9 c) V, ^
3
5 u, K# }# l% m8 B& f, V2 X4
+ b7 W# z$ y% G/ P. a5
" c6 V+ S! R& t( N64 C2 X1 T3 B) }# J6 H
76 t+ Q; J/ A4 i
8* z0 N+ O2 W; @- T. I1 V
9
7 E& \( @  o# g' m! r* d10) p; \1 D( A: A1 N4 @* i. @9 I
11
) `# l9 T6 |  n% P4 B12
) J" S, Q, i/ B& c3 F2 T13  q( b2 A: a- n5 k3 R7 ]
14
  t4 }  D6 j# D8 r& V4 _8 q回到后台检查,OK,可以正常上传了。8 e) z# E1 Q5 f$ P; N+ k
如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查/ F2 ]. ^7 l2 I2 q" m" r
5 z4 V+ i# G4 h7 I5 H# P$ s1 ?& |
5. 列表页无法显示3 O+ a; H, |1 G. e
控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。! V. j! S& y; q

/ d; Y, i9 h3 l' y: ], v- U原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382: [9 K3 C$ X+ F' n9 ?5 _/ H; R# u

) @! W1 `7 F  r; D$ r* M7 S4 e
回复

使用道具 举报

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

, f0 E: H6 w# G3 F# {! W! }" I方法一:通过调换域名修正管理员密码。
" C1 |8 d3 L3 v: \/ X! ~: ^& O* s# J* I; t0 W2 E
这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。
1 q- U; N3 m# _8 Y7 r& R. U% m) ^/ Y+ @3 e7 q
方法二:通过修正数据库来修改密码。
2 Y  F( Q3 s6 b, P# y4 f4 f' |' k& u$ h9 S
这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。/ C% z6 J3 s2 {) F1 I

6 q* ^; k8 c9 G6 ?& @$ s方法三:直接应用特定网址修正密码。
8 a! y$ P# W5 f. }* L8 P& C; e) R) R$ Z: E- J& N( J
可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。
* {& g+ l6 f2 `/ Q+ Y' B  l; Q% x1 D3 K$ x% u
以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。
" l, N4 x$ G) }2 _% I2 Y) G3 @2 N9 a. {
总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。/ [1 w) v4 X2 B2 O

' `/ n# q* C1 X6 N(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。
7 w* J& ^: w% x" {/ F如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。
+ F2 `* M3 B. Z8 x3 g' R7 s& ]2 a方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。
3 T5 `2 d3 H* U& x5 t& \, F
/ V; I6 o; y% C, D2 c1 ]: e& [1 {PHP7 \8 A- g1 {" f2 y9 @
UPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=10 [; [% \% U! @$ e
或者新增一个超级管理员账号如下SQL,然后再修改密码:
; y( ?7 ^! n2 w# d' g1 k- z# G8 B3 w# b) E2 W( L
账号amdin00
3 y: {7 u4 V; Q* _: @8 S9 m
% H: v% a) T. h3 l. v: V; E密码admin
6 f7 G* Z, Y: v1 j% d+ I, A( Q4 s8 c) K9 u6 W; n$ H
PHP
/ [) D3 i9 H3 }  H$ B& W# t0 UINSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES
7 m4 ~5 G/ D7 J' g  b(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');
3 H1 i" T) g, l& o7 N9 E2 M8 D方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。6 k. X0 H* R; ^( S# @. y) N2 N
! q7 ?2 J% O# k4 K
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。/ x% E4 `/ T( e- N2 A' u! `% C9 f
% u8 w% U4 n: T+ Y' ^
J`~}2_3CPV5UBB0ZGXU4PMQ.png
4 G$ q& U# h0 \( l# Q  V5 d
% M& W& N' n$ a0 Y% d3 \1 j
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 11:09 , Processed in 0.099245 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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