找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2916|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:
8 h& K! g. k5 H! T3 r
1 [/ ]2 ?" g  B5 @出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)4 r. P+ O' U2 P" i9 B+ D
商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)
1 F) e! F, c) x7 Z7 ~5 r4 S后台登录不跳转(原因是session存储目录没有写入权限); p  j" ~0 m- Q" i) V. ]
后台无法上传图片(原因是图片目录没有读写权限)
% l8 O+ [" s/ E6 a  x- r列表页无法显示(原因是渲染路径拼写错误)
0 X8 T2 b" M. z2 c" I* K; J注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6
6 u" V0 v  x) D0 f2 j- ~
# h% q0 }' V4 Q4 e解决办法
: e7 S3 p' D& L$ H1. 缺少php-xml扩展
2 V5 u; t& O# p) u根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:
) M# Q' n. Z0 ^# {
1 |3 V4 n' ^: h# R: e& \# zyum install -y php56w-xml
, U& @) @* I9 {" p12 V* T' r" ]# E5 i8 w
安装完成后记得要重启php-fpm进程:
3 l3 f  _5 J0 v6 _7 r
" ~1 F- n3 D9 F- Nservice php-fpm restart4 |/ u2 w" l* g. \1 o+ g) G! l
1
( a, h- T9 E5 P: J( ^& L9 R. w* v重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。1 i" S! X$ H3 I, u
% P: P- U4 Z, {/ ]
2. 商品图片无法显示
1 I, g  D9 c, L5 {/ d用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:
1 G7 [! J7 a2 Q* _2 R9 w+ B* |( K+ m5 f, I8 U/ y4 U8 B: b
查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;: [/ J, F1 U' V  w6 W) A+ z0 z
查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错
7 ^2 l3 r+ Y1 q  j' ?所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。
/ @& q+ c1 d3 z% F再次打开网页,图片已经可以正常显示。6 h7 k. N: g8 D

& L  B5 S2 s* I6 \# g+ h3. 后台登录不跳转' P! b% k$ R6 F. ]
后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。
9 ~8 b; f/ U, D4 Y3 u: w  ^8 ^8 F  F: u2 x& {* m* ~  b4 O+ Z
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)
# U% N9 d8 c9 h5 t9 _  {( @1% s, u' R+ f8 V" m0 j/ h
找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可  `, C7 I  b" ]& l! Z+ b) f

. }2 Z3 K* R# q# chmod 755 session/
8 Y8 C( v$ W6 v0 t4 z1, U, h# T2 h# Q6 ]- w4 c7 e
至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。" ^. j, U6 H9 L' R. ~
/ M& Q* S, q/ x$ w4 Z/ {
4. 后台无法上传图片- c; A+ b: z0 g" Y8 e
检查Nginx日志发现的问题是:
" M% S. W) p+ _4 _1 `4 W- M: Z3 k% O) g8 e! F; E
[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)
) f8 r2 d* e2 B1' _9 f' e, I! @" H5 ~# F, q+ A
此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。
* L& Z' H" N  y! T
' V' Y$ N) n1 x* F7 I) ]8 T! t* b解决路径问题,只是其一,上传时仍然会提示如下错误:1 m5 P  d: W( o0 _

8 e/ i- L1 X3 ?; R3 X9 K0 g  g) oIt was not possible to complete the request due to file system permission restrictions.
; ?' m4 d- v$ M& b# k1 y2 P1
0 b( R& a) s+ X4 t* m$ \这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:
9 Q3 B( g% R% b3 r' l% F" t
6 z; y% E, b9 W9 D// 到网站根目录为image及其子目录catalog提权到777' R0 C$ s) P9 \" }6 U1 I4 n! J
//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)) x# ~( q8 O& B7 ~1 j8 i
chmod 777 image;
/ v; F/ \* {  z* W0 J. t. achmod 777 image/catalog
1 W7 O- D' g! U# R; g# \0 h6 z3 F9 O7 B' E
// 如果 catalog下存在子目录还需要将子目录一并提权
: N+ n( @4 M" p( v% o& i9 d// 列出子目录, h: t. }- M( z" V
cd  /image/catalog && ls -F | grep '/$'* t; Z0 F0 k( ?+ v! [- Z0 E1 d
chmod 777 1/  10/  2/ 22/  0 j9 }) ?2 ?+ f5 m

7 H! p  @7 M, y6 V# r, n% z// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)
" s0 Q0 j2 n2 B3 X5 E" c7 acd /image/cache/catalog && ls -F | grep '/$'6 r" G: K+ }9 i2 b" W4 ?: X
chmod 777 1/  10/  2/ 22/  
8 _/ Y3 f! [3 L7 }+ r; j  c& k/ h9 M% L6 l
1
; V1 g3 r% D' s) u3 {2
/ V% p5 {6 J6 v! g. Q5 C* v2 s9 X4 D3
3 u) f: g  i8 @1 D" k1 S: a4
# D6 _. t9 C9 k' {2 u54 I. B# K6 i% L7 ~. L1 v
6
: D) v5 e$ A1 Q# d" Q: i7
3 i+ e1 M  y$ K; D. [8
, H& Z6 l" M* C( X. j% T9
! ^% Q# }5 B0 [% _% s10
, _; B# Z8 G/ N11, i2 U% ]& g3 ~5 f0 f# |
12
0 _0 X' a- f+ e; H5 R13
6 Z# G  |* X, Z4 S' M5 k14
! `2 i) g/ l' r; T/ }: s4 j回到后台检查,OK,可以正常上传了。
4 Z: l5 k! ^4 L/ R; }- z如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查; n, z+ N; I8 Z1 `
; ^  f( r8 s! U  X& e( W
5. 列表页无法显示
- j2 _% ~' E* B4 Y% t控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。
* F; F+ ?6 [0 B) f( K
- w* v% r7 ]* ?: C原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382
4 j2 i0 K2 J$ G( U/ |2 k5 z/ g" A" _
回复

使用道具 举报

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

: P8 b; L$ b0 r9 L) M4 p方法一:通过调换域名修正管理员密码。
: n# t1 H+ H2 h9 _( C' k+ S3 j: l* U! k
这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。3 H( Q: d3 l6 d. i

+ [! B9 h" A3 H( Q方法二:通过修正数据库来修改密码。* d7 m; X; n1 ]& p' {
; J: P: r$ Y. W1 V3 U
这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。
9 Z5 O" R7 q6 r, I# Y; L" Q
- y+ {8 R7 R0 |; N方法三:直接应用特定网址修正密码。
3 ?# o8 L& ~) P1 R2 i1 d+ `  {+ t, ?/ F. n, o* |
可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。( v% `/ g, O1 W+ D" ?

8 D( |5 [+ x! s; u' Y以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。+ J6 v' c# X6 z# t  ]  X
) k8 `! s' c3 C. T: c! j, i  W1 K2 r
总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。8 Y! z# J3 F& e- y! M  Z

9 E! n+ u8 M: ]5 ?; P(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。) e6 W' z4 e7 B
如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。6 H$ M4 T) y3 |; l
方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。
: L2 I3 \6 U! |3 i, }* }" ~, I+ }; j. Q3 i: F" ?; D2 c) `
PHP$ X3 D; h' n; d# E3 p+ K
UPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1) I, f$ e* R! M( G! d
或者新增一个超级管理员账号如下SQL,然后再修改密码:* }/ S4 `/ J. `5 B: y

5 z5 N( k+ A7 I账号amdin00
  ]* j6 W; f- l
: U- f1 A6 Q+ X5 }密码admin
+ C8 g8 G1 R/ |0 S+ m2 [
, c8 ~) e0 y) R  F1 {PHP* B) S4 d+ o1 s- O5 [" `
INSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES' W/ X! A7 R- o# e8 I# c
(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');
! t9 x' R2 t0 F* D  N: g方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。
! }6 Q. q' K# c- B4 m6 n. A/ y3 ?$ |# ^, a7 O/ o% f" H
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。; X- g- a/ o5 t: v; r  w
9 h  s5 k$ o3 [6 x
J`~}2_3CPV5UBB0ZGXU4PMQ.png
. ~6 F" N7 L% T6 ~
( x) y/ S; o' |8 ?  y  _
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-7 03:22 , Processed in 0.107140 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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