找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2769|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:
; Y% p: l9 D3 \- s8 e" H/ V# B( w
- [% M# D+ z0 Y1 Q3 L出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)
) U; s  e5 W2 I& h' A商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)# @5 ]5 k6 W0 D1 P, n& P% C
后台登录不跳转(原因是session存储目录没有写入权限)
+ o% ]$ b% R9 h, y6 O后台无法上传图片(原因是图片目录没有读写权限)
& q& }. y1 Q6 T5 j列表页无法显示(原因是渲染路径拼写错误)9 F, \+ u& V5 p5 L9 Z, U
注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6
" V. y3 ^5 C2 j% F6 f
2 e+ F" n1 g$ D! c解决办法. y' B# k, s8 u! v
1. 缺少php-xml扩展
4 b- ^: X, Q0 o) o- w根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:
+ H( j. g; r) c0 X6 c1 Y9 g' ^' m% }$ y+ G6 d% b- e0 k  X5 ?3 r
yum install -y php56w-xml
2 B& \7 q; j$ K5 j1' j2 Q% j1 I2 Z. Z
安装完成后记得要重启php-fpm进程:# M+ x( c. S" i4 |5 n$ ?  Z6 b
  r/ x3 x+ w4 S. V. \# m
service php-fpm restart$ f2 R5 \9 P9 r  U
1
, |, o: _  ~2 V  S  h# R& t* Y重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。; o# _( S8 H3 b! X
9 `) V% J1 q9 s( y0 O* d
2. 商品图片无法显示: @& u. S9 n' l& k& h
用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:, `7 A0 G( x8 ^7 y
9 _) L' Z$ k8 y+ x, d: i
查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;6 Q8 F8 ~. k, K8 `
查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错
1 D2 P& Z$ e- b9 \2 H所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。
$ `+ J0 [+ U$ }" {再次打开网页,图片已经可以正常显示。
( }" D, q5 e. e# `, f% e* \' _; i' U4 M( X
3. 后台登录不跳转
+ k8 l1 j# ^) P6 [. e" q5 W后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。1 {$ s# D" ]+ x+ u# U

) Y3 \5 u9 Y* n5 S$ ^SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)
# t0 y3 v' p" R4 F; E( i1
0 t, n" T9 w# w4 k找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可/ R4 P: h/ Q$ I# I7 g

* u5 \* v8 V+ y$ V" C& k# chmod 755 session/
3 P, I3 q0 w) E; h( X6 f1
6 K+ s( j# Y* R; a+ P: A至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。
; V( |( G' d4 A+ m$ o+ T
4 D" i8 T0 a3 D# H9 b( x4. 后台无法上传图片: D8 Q! e1 ^  Z
检查Nginx日志发现的问题是:
( o# |2 S# c5 E" Z' H- G- _3 B+ A* B% _9 G
[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)3 j! e6 Y% T# Z6 C! p
1
0 ?: q) |5 j' s% k6 N" o此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。8 z- e( s$ `* S, A

4 f5 w0 \* C. z解决路径问题,只是其一,上传时仍然会提示如下错误:
) w4 V( |& q; V( P0 a3 L3 k. I$ l# }; Y/ X3 k
It was not possible to complete the request due to file system permission restrictions.' i# b, M" a1 Q
19 i, ]. ?1 @/ H4 A( r
这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:
9 @$ r" p# y6 m  J% {( A8 ^- ^5 @, i# D* Q& x+ [
// 到网站根目录为image及其子目录catalog提权到777
3 N7 t( _4 [' Q+ L//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)" u2 s9 Z. [2 D! K
chmod 777 image;3 l' S9 m7 b; h/ [2 R, o, {
chmod 777 image/catalog8 t) F- R$ G5 g/ a+ x
3 T0 y) A2 y4 @2 S! B
// 如果 catalog下存在子目录还需要将子目录一并提权
7 d% E1 |+ H0 b0 q4 O// 列出子目录
6 L. X( a" I0 J4 @; wcd  /image/catalog && ls -F | grep '/$'
9 z  B& R+ C6 R) j' o. C4 V/ pchmod 777 1/  10/  2/ 22/  . ?! S* y% p$ S% ^) k, @* ?2 o
" E7 P2 I+ f8 W3 B
// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)2 d( ^: `1 N- ]- P' B& E
cd /image/cache/catalog && ls -F | grep '/$'" M9 o3 ]+ P7 n: ~  t
chmod 777 1/  10/  2/ 22/  ' G. c% s  p9 ?# s- J$ K& f: F

' c& p; w1 U. ?! a" d# K8 C! g1$ r1 n0 B" i" ^- J+ \1 l$ K. q1 v
2
0 k9 f1 v  [/ _2 C# E+ T, Y3; e" Y+ }0 g" `4 y' s  }
4: K0 }" B. k/ p) ^
5
& L% i+ N7 n: ?* X3 C, W6
4 w) N* H, d7 G7
& S/ C% A4 [- }$ E/ y, W) }8
) V, E9 D: X' i, u9
8 \& F+ F! K6 E! Y$ G& r0 {; B  j, O10
+ E* D' V" [# `$ t0 a11% t! B% e/ [2 B) i
12
; o' }$ H( w+ e* g+ C13- S# l! I7 }7 H0 k9 V3 L- r6 w; p
14
  {  o. `0 F+ V回到后台检查,OK,可以正常上传了。% t+ k  @( Y) a: d# {, I
如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查, J: l0 W$ ^2 O& Z5 `0 U: Q" P2 w* v

% z/ ^$ z+ r0 ^* v5. 列表页无法显示
  v3 j* z4 A6 s& {' u' `控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。# Q$ p3 _0 R( @
1 \$ t5 d/ ?/ w+ a3 I0 O
原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382: }$ E) {" @) U4 |8 Q- R

+ A3 I% k: s4 L. [. O9 D7 n
回复

使用道具 举报

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

9 l6 [$ K8 F, J/ y1 s. V这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。9 n6 h, ?& L# M" b# t3 ]8 O# f

9 T4 L$ R1 I  ~1 k1 l- h方法二:通过修正数据库来修改密码。8 {( X# M* g# Y5 e
4 g$ e5 i5 {' M  W
这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。- a# g! R/ ^2 e, W1 e
6 D: |% I8 D7 f' ^% `0 s! |( N0 N
方法三:直接应用特定网址修正密码。7 z4 r% ~) p: h4 m& x" a
, E6 ~7 W& [/ w1 {& |" m  Q& d: @. C/ \
可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。
& o7 U; J5 W4 d2 f7 a% w
7 h$ d3 K9 B- e6 s以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。
( c2 |# J5 C+ X3 l% c3 b) E+ u# O4 }  f" U& O9 Q  j# s. A2 p) ?
总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。# P1 r$ B/ m& j% m, K( _7 v
4 @  ^! w- I( @& }. d
(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。
: f" N0 }/ x2 ~; o2 o. x如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。: r. D5 C1 X8 q. U3 x) c
方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。
6 j$ C; [' M" x& c; [  W3 B. s! B+ o% A5 @0 p- k6 ~/ g6 ^) p
PHP
1 e& w0 _; P3 J6 a) m% IUPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1# ~) H" b8 p2 Y7 Y6 p1 x! U
或者新增一个超级管理员账号如下SQL,然后再修改密码:+ D, H3 H0 a% ^; i* X/ ?/ \

5 X- ?; O+ I7 x6 v" o2 W* q账号amdin002 N% e, N7 c6 c. U  D; I1 z

  B. O& Y# c$ j8 }" ^' L' U, a1 S/ S  R密码admin
, R  ~: X, |% H: U9 Y# Q& t+ ?/ z" W5 ^4 D' r/ d: x3 m1 t9 G9 u8 n
PHP
3 r- o: Z/ }. A% ^# [( F5 yINSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES
  J" `0 j0 G) Y$ q7 A( T* b9 B; h(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');
! l5 z! w0 Y; U1 P9 Q. Y方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。
) F- Z/ {  P/ K8 @7 J* J
( p$ Z. G" K6 x; j# \, b6 Y这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。
% G; G, H2 E+ ^5 r+ B3 \4 `6 E
- Z! y  m- U# j8 b: C, ]2 GJ`~}2_3CPV5UBB0ZGXU4PMQ.png* i' A; Y8 E. b: C/ p
+ y5 Q" Z. s- `3 c, \8 @
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-13 10:10 , Processed in 0.047556 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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