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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1143|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:
5 B: A2 Z0 u' q, g4 K) C7 }- }/ i7 v* N) s
出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)
4 `8 r, y0 |2 Q3 M2 o商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)9 v/ s1 w- C4 {4 T# R$ j% q
后台登录不跳转(原因是session存储目录没有写入权限)
# o# ]: v  J" A' U- ^/ ^后台无法上传图片(原因是图片目录没有读写权限)
2 ?& Q8 c5 o- j3 P+ i列表页无法显示(原因是渲染路径拼写错误)
- e- J5 o) x* _- b! z注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6
9 C6 N4 w0 Q2 O2 }: H1 j. V3 d
' k6 n+ ^5 M$ q; l. m6 S7 q5 t) d解决办法
. L/ E% P) B  Q1. 缺少php-xml扩展9 N$ }3 a% v3 E  ~' k( Q
根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:  ^' k4 R+ I* Z* M' c
1 g! g1 n4 T' Q( |' ]0 o, b8 `
yum install -y php56w-xml
0 k$ O$ W" p! Q7 g; W9 X" j1' o6 ]! W2 {7 _1 Q1 U
安装完成后记得要重启php-fpm进程:. R, J, P! _5 t4 g* C

+ R8 V$ b  }5 D, u7 K% Dservice php-fpm restart
+ x* |% H7 m6 S6 g' y  f/ ^$ S1
/ o; W: ]0 b* U6 \) ^. h5 Y& p& ]重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。
7 I4 i+ B, t4 h7 O' d7 p/ A4 f9 j1 L1 E7 G: O0 w5 L
2. 商品图片无法显示
1 ]3 W4 h( U% n' _! H  T用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:
/ Q% v1 A) V1 n# u! r
( ~0 k- x' p- }' u6 _查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;( l  u3 P" y$ B& O7 L
查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错
, S3 j( u8 Z5 A) e所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。
5 w+ a# E- G9 S8 H  [8 S, i( |再次打开网页,图片已经可以正常显示。0 q, `$ K) w4 J* F/ l" F6 o

! u( Z' `5 N' C: d4 p. R3 k3. 后台登录不跳转  h" J$ o# g" C& C% n
后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。
9 \$ ^3 a0 i$ ]4 M1 m5 A
. i9 C$ p4 {: ?( `2 g2 ISessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)& V4 j7 L3 f2 ^8 D9 S7 a7 Q: q
1
7 R0 \6 j+ H0 A: @找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可/ `/ p1 {9 e8 Q* H7 g
  R9 b% L6 T1 x2 `
# chmod 755 session/
4 G; @. F5 G4 q0 v0 v( e# q. f10 x: R5 \9 E7 Y/ w8 I& m" n& {
至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。
1 x, L7 N* q* v% K9 I0 l2 n  @. F: e7 o+ g. l. {! h0 ]; w
4. 后台无法上传图片
7 e+ P' N: [' |4 s: S检查Nginx日志发现的问题是:
: _* _  U! Y6 J5 W- q/ B" O9 Q1 a% ^4 ^+ X5 e- `% e
[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)
  Y) }5 ^" Y' W! |( D7 [1 v1! M& F: t. O5 M- x
此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。( R) H, u9 Y& W+ P
  G; [; i/ M2 P4 \
解决路径问题,只是其一,上传时仍然会提示如下错误:+ g4 d9 J  E( o8 c4 Q' J" J5 `2 L
, X' |; [' D; j
It was not possible to complete the request due to file system permission restrictions.
6 |& @" C: ~2 g1 \7 N3 F& p19 z' W8 I8 {5 t6 D4 {/ W7 C) R* ^+ d
这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:! r: X0 }2 J, J# V( P

$ S# D8 F; U2 }8 b' `8 V7 U// 到网站根目录为image及其子目录catalog提权到777
& A, S3 q& F. Q6 V# [3 m//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)
! x" q2 m7 b, M8 j( T9 uchmod 777 image;; d6 d1 a/ v' Z9 B. q& i, P0 P# E
chmod 777 image/catalog
* I: u6 D: V# Q  J3 x% b* o( y' |; A0 _2 H, q
// 如果 catalog下存在子目录还需要将子目录一并提权. c; ^! q# E! g! D1 @( v6 G8 R9 S
// 列出子目录
% `3 ^. a9 \  y- |6 i9 Zcd  /image/catalog && ls -F | grep '/$': R1 r) t9 {- C2 F0 G  [
chmod 777 1/  10/  2/ 22/  
/ |8 t( C4 U7 |# z  A7 E/ m$ {  Q# ^4 n
// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片): \4 J% e  x: t, ~$ \
cd /image/cache/catalog && ls -F | grep '/$'0 p, B4 ^  \: [
chmod 777 1/  10/  2/ 22/  
$ X7 `0 D( p0 ]3 l% Y3 b
# l, o5 ]8 x. H- w8 j1
- t$ a. U+ G, ?4 j2- ^  w) L- j* w; |0 F
3
9 s* J$ U6 m; p" I9 Y" |7 J4- E8 f5 B6 N, j! B
5
, K6 B2 O' a. e* i% S/ G6
( U4 e; _( Z  X7 l' T7
' e8 i+ d& b) {: T8 I3 ]8
, \. }! i  H7 l  g) Y* V0 z& ?9
, r  b& A: v& p2 K% Q  J10$ p+ n3 Y" T7 I! C+ s' F, q$ {: x- i, V
11. r# h/ m  b7 Z/ q  b
12
. m0 u) q6 `+ Y# ^4 n13" m/ r0 k* x) X; ~$ R
14
/ Q* @6 U0 _$ A4 p. m, E( e回到后台检查,OK,可以正常上传了。! ~  a; V; r, m
如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查
% O6 P5 r* W: y2 Z: g1 u+ U& ?& C5 g  O, j
5. 列表页无法显示
& b. H1 i4 Y, a% t" }  s! z控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。
- i" X4 y  L( q
# t8 {5 y1 m, r7 d/ S原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382
2 e. C% d% D+ l/ @
+ ?  X7 P4 {! O9 \% k
回复

使用道具 举报

 楼主| 发表于 2023-10-11 20:28:52 | 显示全部楼层
Opencart体系是近几年逐渐兴起的电子商务网站平台。其安装便利、功能强大、操作简便,支持多国语言、货币和多店铺,因此备受跨境电商卖家推崇。然而,有时候商家可能会忘记管理员密码,尽管Opencart平台体系提供了默认找回密码功能,但有些情况下用户可能无法通过账户或邮件系统进行密码找回。那么在这种情况下,该如何修正Opencart体系的管理员密码呢?下面将简要介绍三种可行的方法。office-3295556_960_720.jpg
0 y6 h5 L8 q/ J! d' W  k" O2 s4 ]  _+ u6 j4 H( s
方法一:通过调换域名修正管理员密码。
) y, t* P  b1 q# N9 q( F% x6 L! w0 ?8 D7 T. |8 C5 G
这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。+ i9 R. V; T. x: C) E4 R

! o0 {8 z) N8 n4 R方法二:通过修正数据库来修改密码。! \1 G9 H( ?. b7 f& ]$ [5 _
( _) x: s) n* m1 l" m- ]! M* K5 t
这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。4 K* u3 @' v0 O1 N; U5 b
. ^2 ~! ~: n- J  w& g8 p# \
方法三:直接应用特定网址修正密码。
% ~) l/ C. l; v" _3 q/ o- K
( u/ K; s% l. F# v2 B可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。4 t/ S& d# t, h7 e1 p* s; T
, p* ?0 c3 s1 }  ^' [. {. l3 ~
以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。/ y2 U0 ?$ d: q
) `1 Y4 _) B7 A" I) u
总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。) L$ N  g$ U8 ]9 i+ y6 b

1 k4 E: [$ m8 E: T5 R1 _' S/ G( X(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。
( }! R7 O3 H2 p7 g如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。; u$ T% k' B, O. h+ A# K/ i
方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。
0 {' v3 ^" C0 n" o% \) c% P* N
PHP
! Z! w9 c' ^  n# H; a! QUPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1" B/ q3 m" k6 Q: x8 P
或者新增一个超级管理员账号如下SQL,然后再修改密码:
3 B+ h; [  |. }- s4 `7 y$ H3 H$ I) ~0 _
账号amdin000 U" t+ G$ j* o3 D

* t+ [" Z4 u, Q4 v% S- f1 x密码admin& Q8 q$ e: `. |$ O

$ x- z: v5 l, d) S2 n. wPHP
/ \1 g/ q* A, F6 h' C3 EINSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES$ s' ~8 K0 L( Z0 U) Y- l  V/ J3 M
(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');
& |6 g8 L: n8 l% w1 s& c' N' K方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。. B: P3 q7 j, b  W! @
) C2 j9 L5 k. ^: h9 |+ V
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。
7 m' j2 r% [' t* c4 G8 y
2 c: S" n$ j; K/ ~- D+ ?1 nJ`~}2_3CPV5UBB0ZGXU4PMQ.png& o# r+ J& ~3 p. |$ B$ c
1 i1 ?/ t) ?  j% f, m4 V
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-14 17:39 , Processed in 0.154189 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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