找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2771|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:
% R# J" r2 e' h' t- e% d5 e9 [( q3 |0 E2 |1 U
出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)" _( J/ A7 _1 ]. D7 Q" a$ a( J0 y2 K
商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)* @1 C& @: P3 F
后台登录不跳转(原因是session存储目录没有写入权限)4 K6 U* t9 \- c& c( \7 k: t
后台无法上传图片(原因是图片目录没有读写权限), A9 N7 J. f( b+ W2 x3 ^8 Q. F
列表页无法显示(原因是渲染路径拼写错误)7 X% c! G0 e/ c! ]
注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6
" P3 Y6 W1 I: v( M" M7 ]4 {: O. `- b
解决办法
+ u$ _4 @+ [- c8 P" a1. 缺少php-xml扩展& @* A. ~5 T% a7 H' [2 K
根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:: g& U2 i; H% Z# K7 ?

0 G( ]% j  }, Q: X& tyum install -y php56w-xml+ c, u, s9 F/ G
1
0 ?$ I- f* W9 r/ O1 m- b1 a) |* @安装完成后记得要重启php-fpm进程:# O$ s: J' L5 ]* M

, r0 e) t5 {; ?8 tservice php-fpm restart* t3 N7 l2 w3 c2 N6 t
18 C' E; E4 K4 o8 \! D6 A' k
重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。
: `# L# T% ?5 v/ W. b* z# B8 }& ?3 k' z
2. 商品图片无法显示
! d4 O  n" ~# [. w! E  r1 v% w用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:
: r" `* G& w% T' x2 G3 L' B- e- p
, q5 l+ |4 j9 r7 O! h查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;" g$ U. I/ g2 E
查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错
/ K6 f2 Z6 ?+ U所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。
* R% b' _: u  Q) f1 y8 J再次打开网页,图片已经可以正常显示。
/ O: S8 k% \1 s, ?# {& F
) s  R" L! u: f% R; i* U9 V3. 后台登录不跳转  @- R! ^4 R& H% B$ n  V- m. Y, e, d
后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。4 J5 Y+ x/ z7 |, i

* t, C  E( s' `* `+ ASessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)- r/ ]3 e" y( d! }
1, q" Z1 T* {' l( f6 ]0 }7 ~
找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可
; g5 y; ^0 H  e# y6 C% @* }7 L5 F1 L) P+ z* |
# chmod 755 session/: {8 {$ T7 j- ^2 U  J% Y
1
0 s  L+ x: @; Y6 b+ i1 D至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。* ^. ~) M, D' r' p; ~. N( S

% E* K% l" v  T" @1 }4. 后台无法上传图片
; w' H: z! G& u- ~; t) q- \检查Nginx日志发现的问题是:2 i1 M( h3 e# a2 B6 e4 D9 G- t

- r# k0 U! G8 e. {6 v# j. h[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)
5 b5 B0 w$ d/ G% a1
  A: n/ p) H+ e) _此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。
9 J% M9 U! K0 r1 c
6 J3 X: i1 a$ \4 X* H# B6 t- n+ L% |解决路径问题,只是其一,上传时仍然会提示如下错误:
2 z% n+ b( e/ J$ x% N
+ [+ [- E4 u6 r/ ?7 ^! r" `It was not possible to complete the request due to file system permission restrictions.) F" O+ c: I- e5 J
1
$ L$ s: j, @/ @. [这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:
8 W+ M2 d) x, p: h- j
) [9 [$ j/ V5 J' U2 S// 到网站根目录为image及其子目录catalog提权到777# g* n2 c/ M+ F6 Q5 i
//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)1 m  z& v  ~7 A" ]6 t7 x
chmod 777 image;! q  R8 E$ P# Q, d8 y
chmod 777 image/catalog
6 N, d2 h% R" i+ Q5 P5 s6 Z% {1 q. r$ Y! d. v
// 如果 catalog下存在子目录还需要将子目录一并提权
& A" h! _0 D! m' |' F+ }// 列出子目录4 v( H5 g0 \; V" d; `) {
cd  /image/catalog && ls -F | grep '/$'7 t  R: G- B% O# ]1 ~1 F
chmod 777 1/  10/  2/ 22/  
9 X- O+ @0 s( B
/ p* T! H& y0 O0 ^- B6 J// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)
% |8 n; D0 c# X0 f* I+ Rcd /image/cache/catalog && ls -F | grep '/$'
9 E" R$ z9 ^* b6 }' fchmod 777 1/  10/  2/ 22/  
) [1 s- U$ `" N9 m0 ~1 U
: S' W8 V1 E5 m4 p1- S% ~" i% z1 p# Y, a; }6 n* i
2
- P" I* T: l1 O9 w7 \3  k3 [; U" f' O" o$ ^* u
4
4 K! p5 i: ?8 \  @58 X" u+ \# t1 r. `& P3 n: b' N% j
6
* Y8 t% }( x* x; d1 P0 [7; U1 t2 w  f  [% f; n/ u$ n. h" b/ X
85 A! v0 j  h) D
9
4 c9 [2 @! E+ `: M7 d% c9 a10
7 V. T* M1 M% A. Q% h11
# m# p: ?* E. |" y12) ~/ B# _5 h8 B" d( c
130 n9 }& A; N+ a# d
14
! W& G/ h" d9 y) ?/ F0 T回到后台检查,OK,可以正常上传了。0 w; g. y) e5 x' d; o' t
如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查  s. |$ W2 E/ ]( J( |; X

8 O7 ?& y  @8 R# Z% e' [! H: f3 o0 I. ~5. 列表页无法显示$ p" H3 j" Y- X% G5 U: @/ |
控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。$ c6 E* Y# o# R& W/ i* v. O- T' ?
9 v& |+ Z0 |, ^8 T( m0 {! g
原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382: Y7 H$ V. y# q  ?# H6 B
" d- O- ^+ V! B+ t7 `0 Z8 t
回复

使用道具 举报

 楼主| 发表于 2023-10-11 20:28:52 | 显示全部楼层
Opencart体系是近几年逐渐兴起的电子商务网站平台。其安装便利、功能强大、操作简便,支持多国语言、货币和多店铺,因此备受跨境电商卖家推崇。然而,有时候商家可能会忘记管理员密码,尽管Opencart平台体系提供了默认找回密码功能,但有些情况下用户可能无法通过账户或邮件系统进行密码找回。那么在这种情况下,该如何修正Opencart体系的管理员密码呢?下面将简要介绍三种可行的方法。office-3295556_960_720.jpg
& c  z1 w$ b& W9 `6 r
# p4 |* D* X8 K+ T方法一:通过调换域名修正管理员密码。1 B4 U3 |  k) Z: K% h. @0 L" o

$ ]. U$ W4 j" T7 m+ e% Y9 m/ r这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。
% A4 T- B) d! \- k3 D
1 v7 S# ]9 G3 k$ M  s0 b3 v" e方法二:通过修正数据库来修改密码。( `0 p6 W% W- V  m5 m

9 q% g: k8 L- l! q, u- U这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。
6 {. F& _; s# o
) F: N. F: o4 T方法三:直接应用特定网址修正密码。
, l) [2 |7 p$ C
$ E* |% a8 m6 \' ~可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。
1 \8 a( `+ t! Y
6 U4 q5 V& i; D以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。7 d( G- T- `& Q" k+ z2 O4 v
3 v/ N! o+ u* |6 A; D1 i* m
总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。. w* e6 j0 P$ p3 `7 `  l
$ F* @7 @8 x& {& }
(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。
7 X/ @# R$ K/ T" \如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。
2 a- {( N5 [/ t9 V& C方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。+ v5 f( z& Y7 t* O9 U$ d
# B( l2 i) H. F9 J, Z
PHP& S& c: \  o. x
UPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1$ g2 D" p3 _/ Y
或者新增一个超级管理员账号如下SQL,然后再修改密码:! E/ s: o6 |5 n$ ~8 ?5 G  s

# g1 B. \' d+ k: D' z" G" m账号amdin00
+ D- p5 @; K1 ]# V) O; o" c, @3 o1 I" [" `" ~
密码admin6 W& C: d$ |, U" V

* z' F2 O9 ?1 B( X+ H1 yPHP5 k# K# ^9 c; ~; K
INSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES7 b  @) v0 X  }0 u1 i6 a
(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');* p6 ^1 l' {# M# ^7 @
方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。) F# T2 G  ~6 c1 {$ N
$ x; k2 ~/ r* `
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。
: J5 o: p/ s! Z
; o0 V' M( ^2 {3 LJ`~}2_3CPV5UBB0ZGXU4PMQ.png
& L8 Z/ O0 `$ d1 d7 T
/ W/ |, F8 k( T) G1 T8 W6 d2 {
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-13 12:28 , Processed in 0.040060 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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