找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2806|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:! Y8 q3 D8 v, A& G7 u% v+ F
& F" v4 K- Z$ \; ]/ z. z
出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)
! m, C# O" R& U商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径): C. Q3 Y& J- }  h
后台登录不跳转(原因是session存储目录没有写入权限)
# e& Q" k( Q2 |) h7 Z后台无法上传图片(原因是图片目录没有读写权限)
2 y9 a* `. g3 l3 Y列表页无法显示(原因是渲染路径拼写错误)& {; O9 ~* I( W8 d4 R
注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6
+ R- F' [8 k! T. R: T$ w
( `& w' ]% B9 x+ f/ z5 w! X解决办法* w! l) G* t, c- y3 \+ y9 l1 B
1. 缺少php-xml扩展, `$ x9 _, K9 v  R6 h! P$ c
根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:' q  _9 i! |! |& V+ y5 x- E

% N" T* {7 }8 f1 }4 x4 t0 w( Ryum install -y php56w-xml9 p! S1 L; Q; }; I" e/ V* f
1
# S. d3 e5 [3 H( _/ v; b安装完成后记得要重启php-fpm进程:
4 K9 K+ _' d  l/ {
* a- [+ a$ L% A2 q- u* Fservice php-fpm restart
) ^3 x# p! f+ Y$ `, k16 N/ `6 ], J1 ^$ U1 F. i
重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。
4 g3 z5 P; y7 l6 b0 g8 m* x4 P( t- `1 j- ^7 m8 u
2. 商品图片无法显示& ]$ P9 ?* ^0 f8 Q7 _( d! i
用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:6 T# l) k/ t+ U; e8 C

$ }( w) b' S5 u2 ?) S. Y查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;
0 j2 F7 \$ M3 T% V9 b% s2 h8 L查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错
1 E& T2 k. P0 s! [0 Z& V所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。8 o1 D* v# g- C
再次打开网页,图片已经可以正常显示。
( P% f; r3 V) w. h, l/ m' a" B3 u5 w5 {9 X
3. 后台登录不跳转
; x- [% Q! ^; H; L9 v# r# |后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。: n: w' ^9 }' Q2 I6 s
$ W- Y; U2 v! B
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)! C: i3 ^7 j2 }0 U. a0 |
18 h+ y- ~$ f6 \. j
找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可- @4 i3 F3 P* |& f# u% Q
1 D& x  W; F) J; C0 e7 P
# chmod 755 session/! r6 v+ I; c8 `
1
$ k8 R- S  V; E; _- _; X7 K至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。
8 v" L+ V* ?8 |0 T% f3 T: S# N5 [0 T( r7 S3 H9 f+ N  Q" i
4. 后台无法上传图片2 ?) X/ N6 R9 U; F# I2 b
检查Nginx日志发现的问题是:
/ G2 ~# l. M! j- P0 f. b( D) n$ f' V" l1 G3 B2 y
[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)
5 q+ f! D2 _4 k& [) F17 }" {+ Z) f  N( `- F
此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。
2 d7 ]+ q& _! \7 T3 C. O" i1 _7 i. Q) z, z
解决路径问题,只是其一,上传时仍然会提示如下错误:  v( |# {+ s9 H# R* _+ E

# b. a( F# ?% o8 H/ U$ j7 H- cIt was not possible to complete the request due to file system permission restrictions.3 h  [: D! s4 w& e9 q
1
/ U8 [" Z" ?7 F; Y这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:
- Y* q% Z: k6 b6 v1 A9 X; ]2 _4 R  q
// 到网站根目录为image及其子目录catalog提权到777/ i* L* [8 W! ]5 D7 ?* h
//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)
  X+ h2 O/ R1 Z7 s8 [  T: m+ achmod 777 image;
4 R  _" N+ O$ ?chmod 777 image/catalog
+ {$ C9 p' e: b( o+ ~% W' q9 X+ z/ a
// 如果 catalog下存在子目录还需要将子目录一并提权9 I! R0 C5 s- C+ w# E4 Y: `# s" n
// 列出子目录
" ]% Y$ _' U9 P; Ocd  /image/catalog && ls -F | grep '/$'
4 f3 x1 w/ I, Z5 Jchmod 777 1/  10/  2/ 22/  : N* E1 k3 K1 b2 \; _1 _

2 ~; P* C% ]$ y: s& K// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)) o- o) A2 [- p/ V" v
cd /image/cache/catalog && ls -F | grep '/$'; L  p0 p; a/ i7 J( t* B3 x
chmod 777 1/  10/  2/ 22/  
& ]" ^& d3 d1 [6 C( s. O/ Y3 ~9 C; A! D; |$ r9 b% a' Q
1# f0 P7 U, x/ m0 z9 e' T
22 G, D/ u7 _' @8 f8 M! E
3
" l9 J+ h, E! T- M4
+ R1 X( {- q6 x! Y+ I  I5$ n" u% e! W' ^* p8 g; p: i: A
6. ?" F7 u) L+ o9 h% W, g% B4 O6 X
7& }. O' H( ]/ B$ J3 K+ C
8
! L9 F8 C" s7 H9
2 s& O: G( {$ S$ M10
  P, R8 O6 p/ d  m, g/ V: P11
% ~5 W0 d1 g/ W' N: k. O; |1 O; Q12
0 u5 z# U9 ~, r" e3 y' o13
4 X% j2 W- o& g& c14! C8 U: Q7 k9 b3 C: {
回到后台检查,OK,可以正常上传了。. o! C+ D1 g- B- B$ T
如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查
  M3 h5 e, Y/ W; a# B2 u* A7 V
2 b. J9 s, \9 ]5 L/ k5. 列表页无法显示
3 u( w6 g5 e9 C* t! o/ ?控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。, b5 \- r6 L  o8 x" Q* ^* i

' N1 V/ ^% {0 I" _0 I! H原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382' o1 o& J% s" B! a- }

. ?# r7 s  h, l# O4 G
回复

使用道具 举报

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

! D' x4 U$ m9 P; Y方法一:通过调换域名修正管理员密码。
6 H6 T  O, F7 L! ~; ~0 l5 R) J& X- Q0 S/ l6 x  K2 c% K
这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。
- y6 Q! ?+ |( V" o- Y" c7 y% v5 k' F
方法二:通过修正数据库来修改密码。
; l5 M5 y. T+ P7 W, m/ |" U' P, P8 J
这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。
& X2 U3 o  C3 X; s  {8 {% ]" O8 s* O3 J" y: K  p! ]  K8 V
方法三:直接应用特定网址修正密码。3 [8 k- P, H7 j1 Z1 \$ p

/ W* C0 J1 R! ]+ n) y& }可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。
( L- Y6 X+ [9 R- g* U
) ~  N* ~$ ~7 f. s" G4 ?以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。  H/ r4 A% O' Z5 k( r+ Q

; ^3 a0 q! Q) }) W总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。+ O% b' A! _# u
8 e* ~; d% L  @5 A$ U0 j
(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。0 y, _# Q6 W* Y4 w2 l) O: X4 ~/ a
如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。; C9 P# h/ |1 t% @3 @8 Z9 P( e
方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。
8 N6 S! e/ a1 X% J) A( E  k, Z9 \. [! Y0 ^& J
PHP8 \9 \# {3 y2 M$ m
UPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1- \$ A" P- Q6 _
或者新增一个超级管理员账号如下SQL,然后再修改密码:7 d4 s( G& v! y4 \
' V0 @" D8 R$ |: `- S) f- I2 E. h
账号amdin00
5 p4 @+ [8 P( `% |; F
4 C: a8 M3 p' d密码admin
  T* P+ [4 Z0 J. Q6 l( e" n1 L, D( T- j: O3 w  a+ X+ d
PHP, X8 l, x  ?  m4 g8 x. L
INSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES
# ~2 i2 K* X; m( _$ Z4 i$ E(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', '[email protected]', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');
/ S) G+ x4 i0 \& c  N方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。
2 S7 M) n) Q9 s% u% Q* {3 ]: B# h0 S6 a7 r+ ?0 }
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。
. D. m6 D6 P# F  x4 R! m* O, |2 y
4 S/ x! ~7 j4 a9 |6 @J`~}2_3CPV5UBB0ZGXU4PMQ.png5 s3 Q  c" s+ a7 m; d

# ~5 }. t# v: T/ O
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-29 17:44 , Processed in 0.103090 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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