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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2401|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:
; J# w* I7 V) M( m) p8 A( I# E
& m+ H8 B2 z4 I: c& \出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)" u3 q( ^0 T& T1 I
商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径). h: u- w" O1 F9 W8 z: O1 S
后台登录不跳转(原因是session存储目录没有写入权限)
  l$ U0 o4 p1 I后台无法上传图片(原因是图片目录没有读写权限)
; Q+ o/ L# o, C, h列表页无法显示(原因是渲染路径拼写错误)
  F( w- w6 R2 H% y( ^( d' R. P注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6
, l; H( E1 t9 e8 ]: i  x$ u0 T0 c' a; V* H  n  o$ I# [9 a( _) }
解决办法$ g; u$ Z  H5 z2 i  e0 l/ g' n; |
1. 缺少php-xml扩展
0 ?5 g7 U3 M, ?1 L" X1 z- U$ u4 \根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:& F/ x; U& Y% a! Q

/ k( G& k% b1 s: N6 D) u2 xyum install -y php56w-xml. r- r% w5 A( }7 o# @
1
; o& s- n) u/ S! {5 T  e; M安装完成后记得要重启php-fpm进程:
  s5 w# U  I" n. N. L# `. k# [& |9 f0 T
service php-fpm restart8 v; g% [0 d' I% n5 l  R6 e- d% t
1( q  D" k7 ^: |- v2 U+ R
重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。5 q7 E0 r9 H; Y3 r/ B

4 W0 I  [, L+ m2 u+ I3 d2. 商品图片无法显示
) {8 m: l6 i2 M% u用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:: w+ f8 C' N2 L* |/ X( ?
  Q& G& `8 f9 Q. s$ l! ?$ Q
查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;, `  J  G0 h# t# F8 U
查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错6 K4 v# r5 M9 v0 v, F+ G3 Z- l8 V
所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。0 K- [  T( B5 q
再次打开网页,图片已经可以正常显示。! V- C8 q6 ?/ G& r6 V- `4 a
1 \0 ?/ ?) t7 a8 l, h  k( V
3. 后台登录不跳转: w+ H6 K. ^8 k" ^& A
后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。$ S( Z" N9 D4 n* \6 s& e$ I( [
2 |; L( }+ l/ B5 B8 G
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)" s% D+ M8 K- ]$ R' V# W& ?
1
  R# \3 e% |8 t# |2 t, d+ K9 B找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可( U% n* Q3 x  h! n7 u% |. ~

6 n  @1 M% |6 m' I. N# chmod 755 session/
) H) ]9 M) J, x6 Q" P* I6 J" x15 }1 Z- M( p* {
至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。
8 \2 W' A& F3 y9 h- A: _' U1 K' F  P# c
4. 后台无法上传图片
6 I$ i8 s0 Q! d检查Nginx日志发现的问题是:
) G% f" T: _! D4 O) ^) ~2 E- M& K. G  ~
[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory): p1 K3 R6 K# N) q6 s
1
; D. e% n* P8 n! E. A0 x此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。
2 s, w5 D$ {, ^5 H3 i# c, H+ D( T1 ?
; \7 l* }: z% Z, x& L& @5 n解决路径问题,只是其一,上传时仍然会提示如下错误:; p" x% e- X0 o
5 M" m4 H9 }, C
It was not possible to complete the request due to file system permission restrictions./ p' z6 A. s3 j; b, r
14 A3 k# }. N' i; d, }) R
这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:
2 T7 j' H0 w2 |. W- l% y$ b( d" B; y1 j
// 到网站根目录为image及其子目录catalog提权到777  @4 S1 H1 t7 W: p2 ?/ O
//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)
# o6 P, b. T% H$ uchmod 777 image;
% t3 f/ G2 W4 P* r* T, gchmod 777 image/catalog6 p0 P' o+ `' Y9 f! n

2 ]0 }  |% s8 K2 p# s// 如果 catalog下存在子目录还需要将子目录一并提权, v6 Q- i0 \6 r/ e
// 列出子目录
2 C$ `2 h) p1 \  |# x4 {cd  /image/catalog && ls -F | grep '/$'
6 V* ^+ h4 E0 N" |1 Q; Dchmod 777 1/  10/  2/ 22/  
2 I3 {$ k# r3 O; w4 w1 e7 p( T( v  A( ]0 N' l6 X1 v
// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)
' C+ ?+ |: G6 @) G5 e) ^+ bcd /image/cache/catalog && ls -F | grep '/$'
( [  @9 {, ~! i8 wchmod 777 1/  10/  2/ 22/  
3 x/ \. w" p. X5 T& Z# l; l1 f: o+ U2 e0 n3 C9 E' S0 `
1
1 O( K+ l& p: o5 j# {# A20 [( u- `2 t0 p
3- Y/ `' F- B' S1 b& M) U
4
, V& N  M6 R1 Q) {2 s3 V57 ^1 _7 k) z* Y+ Z. G$ N
6' M0 y% z4 l+ U- t
7
* ?- ~7 M( r4 L, s2 L+ O" Z8- O$ @6 t# C) t
9
5 ?  I7 N* k! ^0 V. R4 h10
3 I  G" o$ Y( B+ P  F% v11; k; e. N1 I  V. D
12
, G; U4 T; c+ t, b13
, i* |. ^" ^( |  n! s$ W14& S$ w* |4 p1 F* T+ R7 O6 N
回到后台检查,OK,可以正常上传了。1 F1 d& E0 q2 h5 ^1 b2 |: o
如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查7 O" s9 d2 w7 w0 f; }- a8 {4 v

' K; P! p7 z* [  ^$ o! x$ Y5. 列表页无法显示
9 e/ P8 W/ Z1 `) A$ e控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。" g! M* b) G& \3 Y" D& K/ x

* M- p' W& Q: V/ W7 _原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/907203823 _: d! o1 F- i; h9 C

3 |  B8 G% k, U1 n7 G
回复

使用道具 举报

 楼主| 发表于 2023-10-11 20:28:52 | 显示全部楼层
Opencart体系是近几年逐渐兴起的电子商务网站平台。其安装便利、功能强大、操作简便,支持多国语言、货币和多店铺,因此备受跨境电商卖家推崇。然而,有时候商家可能会忘记管理员密码,尽管Opencart平台体系提供了默认找回密码功能,但有些情况下用户可能无法通过账户或邮件系统进行密码找回。那么在这种情况下,该如何修正Opencart体系的管理员密码呢?下面将简要介绍三种可行的方法。office-3295556_960_720.jpg
+ ?8 W' m4 u  i$ I+ E, ~3 J* k7 i3 C7 ?  C4 [4 ?6 w
方法一:通过调换域名修正管理员密码。! J- A6 W- c# E3 k- n0 C

% j; I1 H( [- m这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。7 k, w5 N" ~3 H# C5 ]/ g% K
# |# L' I% `4 E9 u
方法二:通过修正数据库来修改密码。% s5 Q* m% m. P
5 J- m! m3 P3 J6 X# A8 ]) E
这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。
( ]; \4 u/ h: F9 F# z3 s+ ?* n' M. _6 z2 p% T% i  [' D
方法三:直接应用特定网址修正密码。6 X3 L' ?8 }( K' r8 o

5 E5 j! [2 R% Z% T& x可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。
% j0 c* j1 A0 X& ]# n1 B( y
& o& D' ~1 J4 F8 X6 B# k1 o以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。3 x5 C3 Q( w  Z, P

2 I& q2 T' `  m0 c7 v6 [  j/ W总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。
6 g% ?- a) _% r$ _: h2 B- q( y2 m# c: C# Y$ m7 ?
(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。0 }5 ]. [. N* _% g+ c# h) U/ B
如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。
+ B$ p# z' n( p6 Z. _* G$ ?' }; J方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。% E  n9 \* G; X& o0 w2 p' D

$ `3 a1 I; I; qPHP
: a7 V8 w. Y' ]+ y6 v2 KUPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1
- }2 f# h( t$ _% U5 S8 {0 i或者新增一个超级管理员账号如下SQL,然后再修改密码:- T7 G+ h& s! M3 X) f1 ?, z& \- J! }2 g
5 C3 ^5 ~0 J- J* a: p
账号amdin007 e& L* G1 q4 t3 h3 U

6 X; ]" q" e3 J- \$ V密码admin
. w) q) p& z' L8 h! p: W, G! C" v2 r* f8 W: m
PHP
7 d( v+ D) V; ?INSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES# H! \+ p3 Z1 O+ o
(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');0 `8 _. Y. g! z# V! J7 G
方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。; q: \9 ~" P) @- j% ?
8 p) {) x/ J" N* x% _1 O
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。: V  k* d8 B- l6 d
! y; a! {4 z& C. \, n. P- {6 i: g
J`~}2_3CPV5UBB0ZGXU4PMQ.png8 y7 Y& _8 f1 D0 j( H6 {/ O
, l, N# I- I' ]
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 18:57 , Processed in 0.195661 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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