华强北电脑城 龙岗电子世界 龙华电脑城  凯尔电脑

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1152|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:
# ~  [" b  N1 N# u1 C7 U( ~
  h0 o' `9 ^" g出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)
6 w* N, X* L* l$ h/ w商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)3 n2 K5 i% p2 w1 s# C
后台登录不跳转(原因是session存储目录没有写入权限)
4 q/ @9 v3 R- d% x2 n" U5 E后台无法上传图片(原因是图片目录没有读写权限)9 p6 U& Z' X1 h5 N
列表页无法显示(原因是渲染路径拼写错误)% [, v. w& S' ^, A; U- [  {
注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6
+ _8 i3 l1 q$ ?( M. Z  ?' x+ x) n1 F9 t" Z/ [3 }
解决办法
' |9 z' k- Q( s5 f" T1. 缺少php-xml扩展
; T9 \0 p, g$ O/ H' \9 @根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:6 Q/ F  r0 `8 s/ x/ O* Z' H5 e
% E2 _( S4 l( G
yum install -y php56w-xml) D' _4 B8 a( l8 y
1
# K7 t. U6 N' t; [安装完成后记得要重启php-fpm进程:
; m1 k* X. ~3 E6 p; P' ~2 K9 h" a, ~9 w+ M) l- p
service php-fpm restart
2 J+ t3 S1 f) o+ H4 y1
* c. g) S) w. j" Y% ]: j# n# p; n重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。
9 g: ]( d! L& Z5 m! j+ b7 V4 y2 x/ s( @9 |0 E/ g
2. 商品图片无法显示
1 }3 d, n7 \) x0 S+ X7 l, o2 @3 u7 W用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:0 P$ v4 G- p, I1 f. e! I2 n. P
4 F- g8 a' _* Y2 |0 t
查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;
! d5 V6 I9 j; R1 I* n& A" i) ?3 n查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错
2 [5 _- _6 Y2 A4 g4 I' @" v所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。1 v1 R$ G: U  g
再次打开网页,图片已经可以正常显示。
' H* l( X3 r( p, f- c/ c
7 S, U6 M2 w, q1 l; ~3. 后台登录不跳转' I/ a, _; k0 T/ o; D8 i* C- r1 l
后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。" D8 r* Q# ?/ @# Y% ?8 S
, n+ M: b; A4 `( A* S
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)
/ k. ^6 s8 F% F+ _1
" M8 v1 N$ c1 p# V- y+ e8 @9 G找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可
  S- u# z( J$ l# {3 U1 E9 D- `" M1 o9 ~
# chmod 755 session/4 ?$ C( |% W& ]
1, u' P! P! b( v9 h! N3 C5 O; g
至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。
3 O% k+ S3 @' n2 j9 Y- W' d
) B) p2 B9 M; v! K3 O8 O# S7 D4 N4. 后台无法上传图片
# l0 x* j( ?2 q5 v  K5 |检查Nginx日志发现的问题是:$ H' j9 H& l* R, k7 ?

2 L) V4 |  ^, ?/ y$ o[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)1 t/ v- P4 o# v# I8 ?5 d
1; ?3 j0 M6 {3 x' I# H
此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。
! d2 T- F/ O/ ?& D' J& y% p) F! k7 M8 l- T+ A4 q1 |' Y# ]
解决路径问题,只是其一,上传时仍然会提示如下错误:  S! g3 }+ r* B; ~1 w1 i5 q( b
& g& P3 y* h, d/ V3 E% L# A
It was not possible to complete the request due to file system permission restrictions.
, K4 i+ G# e2 u2 o0 S1
5 v( o7 P- s7 b( ^这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:) T# e7 [$ R) Z( P# {2 D( E

0 x) R! S) i+ ]" d. c6 B! l. v$ o& G// 到网站根目录为image及其子目录catalog提权到777
6 u9 k1 ~" d4 V) I% e//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)
' N3 K) e& B6 j9 ]! kchmod 777 image;
1 T: g: x! s5 {( x) F8 mchmod 777 image/catalog- h: C6 w% V5 @: _; d

9 {5 N9 P4 N2 V1 o// 如果 catalog下存在子目录还需要将子目录一并提权
+ ~) X7 N6 \% X; ^& d: }! P// 列出子目录- c& Y0 W# \2 j& p4 p' }( M
cd  /image/catalog && ls -F | grep '/$'. A$ h+ Y6 Y; w
chmod 777 1/  10/  2/ 22/  % g8 M1 t5 f* S. g4 P5 O8 Y9 T1 ], h

# r7 t- g6 N# M$ v5 R// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)
! U0 t. c0 N! Q+ V# Z6 mcd /image/cache/catalog && ls -F | grep '/$'# ]0 j0 X6 s/ d1 B
chmod 777 1/  10/  2/ 22/  $ ^2 k; N! W# E- M, v% r
+ N6 L# p$ v  U7 Q
1) M1 T1 M& l6 o* H+ j
2. E+ O  g: y9 Y
3
9 Y2 Y, ?' e' U: R; _; V4
  _0 I& J: k+ h2 e& w5
1 c2 P$ J7 ]  N. m8 l  e; g6
; I: {: D% M$ q( N% z! l* N' u0 q7# J2 ^8 S$ ~; a
82 h. j& y9 S" [% _. X; x
9
: T; q5 G8 J, n0 G7 E3 o101 i$ F7 O! ]* a; v$ M2 X
11
; e, E! d* z* N12
2 C7 r' ?5 J' W9 q# R13: q3 a( R2 n0 a' ]
14
' z/ O& p. d* }+ r$ t$ i回到后台检查,OK,可以正常上传了。+ r* h: t9 G7 g, W. w/ w  Z" d5 C, j
如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查4 Y  Q, Z( i3 c) p5 _

- k* O( ^; o! N* }2 D# N2 F5. 列表页无法显示; v7 i# |) S! w) [8 N9 Q4 f
控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。8 s: ]4 k6 g2 `: t
+ ?) C1 k! M  `1 a
原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382
; }. v9 H1 _: A0 X
: i: X2 X8 e/ f/ k: G- [- w
回复

使用道具 举报

 楼主| 发表于 2023-10-11 20:28:52 | 显示全部楼层
Opencart体系是近几年逐渐兴起的电子商务网站平台。其安装便利、功能强大、操作简便,支持多国语言、货币和多店铺,因此备受跨境电商卖家推崇。然而,有时候商家可能会忘记管理员密码,尽管Opencart平台体系提供了默认找回密码功能,但有些情况下用户可能无法通过账户或邮件系统进行密码找回。那么在这种情况下,该如何修正Opencart体系的管理员密码呢?下面将简要介绍三种可行的方法。office-3295556_960_720.jpg
- C( K& T2 b# N
0 i& Q. d+ d( f8 s方法一:通过调换域名修正管理员密码。
& j+ u0 \6 S, O* S, y  C5 ]" P( g4 e
这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。3 s3 f/ `/ g* ]

( X4 V  p4 P/ [- p( O5 A+ E+ I& k5 g方法二:通过修正数据库来修改密码。2 B) q5 j. [/ `- \$ K; P

* q. h8 H( p( T. b. ~7 z9 ?" j- h这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。0 \6 x" U% m& n/ q4 b$ I) C2 r% R
/ L) r  b0 V+ ?) m
方法三:直接应用特定网址修正密码。( `# ^* r% @5 y# I  @

6 ]* d7 ?1 Q9 k5 s! `  ^3 i7 C) q$ b可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。) |0 s8 R2 ^: z1 G$ v7 V
, |" N2 o7 ^: Z) M1 @7 i
以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。
5 ^2 i2 g: Y: B1 h
6 K% k& M" [. o5 ~& C  R总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。
. y1 T  n7 Q" X/ W9 m) F9 V2 I( W( E
(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。
' g' a/ M4 ~7 i% n* f' y如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。% R1 ]7 `/ ]; E
方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。
9 R; @7 A, q' W3 _9 ^# _9 A9 e1 P* e8 Q1 t2 F' K; b
PHP! K6 ^) I2 U0 h  [( l! a5 r
UPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1/ u) q5 {, w& a, h; @) ~
或者新增一个超级管理员账号如下SQL,然后再修改密码:
; R/ D" X( |; B! o0 g
" c+ u2 E' m! A& w: I账号amdin00
4 L+ ~, `  Z! y
$ {. r, V8 f$ R4 X密码admin5 q  @1 C  R" U3 l
4 U4 C& b2 N' ?& {
PHP
6 _, w+ x2 m  `: `3 O* ^7 k2 ?2 i- bINSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES8 f, y- _8 E( T  H! E8 w
(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');% `# W  _& G; U( }# k
方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。
  o$ m8 }, S% {- L: Z& t5 g' ~  _! D& T& W: c; U4 {  c) v* b
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。
" s7 V" W4 M  n5 ]( w+ u- g" X5 }' `5 {  y% E
J`~}2_3CPV5UBB0ZGXU4PMQ.png; p& C6 i5 V; ^

9 t% f. F% V5 J2 c3 ?! J5 x
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|华强北 电脑城 龙岗电子世界 龙华电脑城 pc4g.com ( 粤ICP备16039863号 )

GMT+8, 2024-9-18 17:31 , Processed in 0.157458 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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