找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2917|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:$ V. y3 z5 B/ E

6 |& t. m4 l) J" i: j出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)7 G" f1 ?4 L9 z( ?1 Z
商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)
+ o, H* u$ B& V' t4 f/ y' u后台登录不跳转(原因是session存储目录没有写入权限)) R+ v: T' W' c# k0 d. u
后台无法上传图片(原因是图片目录没有读写权限)7 K8 T4 u" w" a' n. V# {
列表页无法显示(原因是渲染路径拼写错误)" C/ K8 |6 u; T, V! n: j5 o
注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.64 M5 E- z' g) W6 n- N6 N3 u
8 \+ _+ G; f& Z; K! R, \! H
解决办法* d5 b3 N  t1 @$ i. m
1. 缺少php-xml扩展8 m& d7 |3 M% f8 F8 y# T
根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:) c7 R4 D5 T# n8 P

! G  p; ?. k% A5 jyum install -y php56w-xml4 W0 H/ R  d4 ]: T
1" t( n5 R% _7 z. A7 Y2 J; {8 m
安装完成后记得要重启php-fpm进程:( F3 P8 f6 j  P/ O
- J+ h; [% [5 z7 H  ]
service php-fpm restart
" F1 o- i% a% R) R1; w1 n1 Y7 W" I( M
重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。
$ D0 P" N; T- ]# w! L  V! o7 T, w; N! b. ^( P  B
2. 商品图片无法显示2 O! T5 S! ?' L7 Y
用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:3 f3 _. d( ?  C- }
( |- ?0 J  g% n3 Y
查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;
! ~* }7 k8 l4 `' |- v3 U0 y  O查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错1 m( V3 K: K, S' U4 n, T" A
所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。0 ^$ D5 t8 i! D! t' r4 `2 F
再次打开网页,图片已经可以正常显示。
( @( E. r" ]* x5 E4 @7 F3 p# g
+ b8 {% x1 Y; n. g3. 后台登录不跳转
+ D! R+ l6 K, I/ C后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。
9 j* R' d0 O' B8 e$ Y! b  E5 D  P, w* u% x; l! ]
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)
* e5 E7 K3 a$ W9 Y8 [- e: X1% B5 W( ?4 f# d" n
找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可
" Q* E, K" d) k! ~2 C* m3 ^) Q; J
4 {7 l0 M; z* ?# W# chmod 755 session/
+ X7 u. G' w* z2 s$ A9 q11 p4 Y& d- S$ d& i& `( @0 ]3 e
至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。) h0 O  M+ y( E% M4 N- w

" b  M/ O+ F: J; t& t. r& r4. 后台无法上传图片
5 J7 u+ \  e6 L3 _- F1 E检查Nginx日志发现的问题是:
0 }" u6 U# m! b: D. D+ ]3 t: ?; x% }# k7 T
[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)
6 V8 C1 Z5 h; F8 T* G% g18 t& e8 ?+ P! l
此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。
: b; J* ]; T( {
/ }' i2 ]- V% N解决路径问题,只是其一,上传时仍然会提示如下错误:! i, G0 A! J! g1 u. [( X9 z9 b

7 @: v. S  W" z# E1 ~- U! JIt was not possible to complete the request due to file system permission restrictions.% C- i. W" b5 n4 @( U
1
4 t; B+ h3 r) Y1 R这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:4 h- ^: c0 b" @) g( N2 s3 v
7 m% L" G1 B' j
// 到网站根目录为image及其子目录catalog提权到777; C5 k3 L: K& R' F3 ~6 A
//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)
3 q6 r6 ?) [: S* ^  d8 J  s& B7 cchmod 777 image;- @( j, h1 }$ y
chmod 777 image/catalog
( g6 o& X8 G4 R+ j' w5 S
3 N% D! ~; R+ h, `  x; R// 如果 catalog下存在子目录还需要将子目录一并提权" ?1 z9 f% U2 j/ Y2 Y3 \! }
// 列出子目录
2 B, {. u$ A7 U* ^cd  /image/catalog && ls -F | grep '/$'
8 D/ v- _2 T( e: C3 j! B3 N% }( Vchmod 777 1/  10/  2/ 22/  : X& Y% ?$ a. e  M
) L# Q/ d* |) Q! N0 J7 _6 G2 v* _) m
// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)  Q% p5 @% l7 _, a) X/ _+ [( i
cd /image/cache/catalog && ls -F | grep '/$'
3 t- d, B5 _8 `( x1 Qchmod 777 1/  10/  2/ 22/  . ]/ s+ B3 ^% ?3 k! K( a- f
8 x- z/ s& m! D/ L$ j( _% [7 F
1+ f+ I0 ^; e$ R0 `# C
28 e! c: b( H9 l8 _7 Z
3: A1 A5 m% Y$ E6 [3 U
4
$ a2 c* q6 b- K! j9 I53 T; F# B* [9 T: O5 K: [/ ~
6
. W! M- @. X; y+ q; R! [9 n% H7
2 j, s% `7 ?1 X+ _! m: H- |% d81 ~; a9 X% k9 s0 H; n; T
92 r9 d1 w0 G& g, C: A
10
2 c7 \. y0 B: k+ D. Z* B. j11
" Q5 c! ?- `5 H/ S" a$ {12
% D* {' @) V" m( `5 q5 X7 }8 r13" {! x$ o! E- T; b8 z/ k
14
# M* |9 q; a$ m! u; f2 g回到后台检查,OK,可以正常上传了。- s' l7 V1 X7 T" c0 i$ Q6 W) l& a
如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查
2 B1 e' m' L' q$ v4 U8 i; N. n! t
' t1 j' k5 o3 w' ~% F0 Y5. 列表页无法显示
4 {2 E+ I9 W! v- M# j% R: Z控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。' P& Q6 I6 c% z/ P1 A! B1 J

' L( W! M$ F  c# ~原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/907203825 l: U+ b2 G; a* u' [
( k  w% G5 R5 ?9 f9 c
回复

使用道具 举报

 楼主| 发表于 2023-10-11 20:28:52 | 显示全部楼层
Opencart体系是近几年逐渐兴起的电子商务网站平台。其安装便利、功能强大、操作简便,支持多国语言、货币和多店铺,因此备受跨境电商卖家推崇。然而,有时候商家可能会忘记管理员密码,尽管Opencart平台体系提供了默认找回密码功能,但有些情况下用户可能无法通过账户或邮件系统进行密码找回。那么在这种情况下,该如何修正Opencart体系的管理员密码呢?下面将简要介绍三种可行的方法。office-3295556_960_720.jpg3 \. Z! ?6 V7 d' ?. ]
1 ?8 W6 s9 f: Q9 V: \, [- k
方法一:通过调换域名修正管理员密码。
5 a, y, W; X: W& @# w8 t; \' ]2 [; C6 y) d& O; M3 _% T
这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。6 |8 u6 T! ?3 H) x

3 ^4 e0 Q$ f: Y$ W9 Z" ?0 R方法二:通过修正数据库来修改密码。
0 G' L) ^" C" x: a& U& R& f4 g8 B% L6 p: |
这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。& G+ j1 H& K9 w5 c; {* C& b9 M

0 q, u: }8 {2 [) @* x4 w! l' N方法三:直接应用特定网址修正密码。9 e% t4 i0 g/ c$ g& {( [8 _+ y

+ i; w9 O- M" e- o3 d$ ^可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。
  X# t$ g& y3 F+ }! H7 k) `; h5 x% i2 f9 L. E$ G
以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。* J& P' [4 W0 h( S& M9 y0 Q

$ L% B5 A" d/ y" s. Y总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。
7 y# ?& G* G! z9 I0 P7 A  j9 c1 ~! V$ h
(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。  d( }! \% l5 s; n+ L& d
如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。
; j0 p! X- p4 c- n' n方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。7 P1 V4 I" Q( N' F5 L5 V0 o
6 z: `/ W: y; d0 i
PHP
8 ^% S" H& z) f+ mUPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1
- \) [$ t" i  u5 j% G" }" x5 H或者新增一个超级管理员账号如下SQL,然后再修改密码:  ?' D$ N1 u, X1 i! ?' }3 j$ [- U

7 [' _) L8 t$ \$ X0 D; M账号amdin00
# s- P7 ^) m  ^$ g3 k9 D, ]
# L- l+ W0 J$ c* A" L! n9 T密码admin# l3 \$ X6 Y" n! F1 I" u4 U
2 S( H! D1 W; y( j- B8 i
PHP
4 N9 z9 L8 }' \' M4 DINSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES
* X* {% ~' E& X: M8 F(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');
4 ?; G/ N) F; A0 I方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。
+ n9 y8 B* m- L' r+ x* Y9 U" G1 \. t' P% E- c/ P& f( C7 h
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。
2 n2 n# K! I5 ?$ m/ X
9 C( a( s4 d- d+ wJ`~}2_3CPV5UBB0ZGXU4PMQ.png
) \7 T7 w6 Q* q
9 |$ y) U1 R! q$ i
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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