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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1153|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:' O9 \2 P" [! q* T+ ]  W6 F
7 H; _, D8 X3 h6 Y
出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)
* J" i+ d/ K- a5 b商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)
5 {, N/ [3 S5 F0 N3 w后台登录不跳转(原因是session存储目录没有写入权限)" X+ d/ c1 C* s# X
后台无法上传图片(原因是图片目录没有读写权限)
+ [4 C) A# n& j. w列表页无法显示(原因是渲染路径拼写错误)( a2 J# j9 o: e& @3 o- S1 P
注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6
! x) B5 r* J$ F, F4 \# z* j( c7 G4 j* p0 c
解决办法! _: O/ K3 n( t4 y9 G# f, ?
1. 缺少php-xml扩展
: g: r. L: ?3 M3 f  F; m- X! v根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:
  `# U: `0 F' a- U6 U* y% [
! N% O6 R4 ^; u, |! ?4 eyum install -y php56w-xml8 j5 W; l- b4 v5 c! q( X4 k% h
1, F0 S  l( U: s1 A' V, U1 u
安装完成后记得要重启php-fpm进程:' D3 @5 o. y( G2 i

7 R8 K0 ~+ e8 P: H- c; d; kservice php-fpm restart; h  O6 @) p6 f) B' P
1
7 h9 `0 [: }1 N* I  u, O: U重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。
4 C9 B/ l7 `" a. V' `9 N7 P/ C
, B0 N. G  F2 _2. 商品图片无法显示
  W9 D- O, B# _/ J, f- ^用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:
& c. y- x! q$ I5 N. o, D
, u0 o3 x9 ?# u7 q% B7 u查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;
! N$ ]/ X6 M; z# z8 a查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错1 u4 {5 |8 [# t9 K! }
所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。+ l7 m; ?% h- U0 B# O
再次打开网页,图片已经可以正常显示。8 d4 u& s8 [5 P6 j6 t! }  T
: z4 C1 o5 [7 w7 l3 z1 W( s
3. 后台登录不跳转
  q1 d2 U: q$ \8 ?% {后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。& I. {- i* u9 o9 y: I) ]" |7 T* e3 z
: X2 |: G0 c$ H; x0 s4 u
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)
. n! r# \+ {- \% Z+ ~: W( N; C. H14 \2 Y" d7 \4 W3 a* ~
找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可; F* ~) v2 l1 o1 R
" \+ \( q1 F6 Q! N* V, S; A
# chmod 755 session/
, e, Y9 I' h8 }3 J, ?$ x# X1# [" C3 _$ D! r5 n- y9 A" k
至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。& C. f+ D, N! N! t" c8 `
: J: P) t" c; ~/ D
4. 后台无法上传图片
" A+ W+ E  l/ R% m检查Nginx日志发现的问题是:9 E  i  e3 g! c# i9 F; Z

. M7 ]; T, c1 w$ C[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)* L1 }2 K9 k  S( }( M/ u8 j+ J
1
2 a7 }0 C. W% Z7 W此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。5 C% H! M8 v- \4 U, O5 V' R
! t( X6 z0 p' v+ y1 [& U: K+ v
解决路径问题,只是其一,上传时仍然会提示如下错误:
- p$ G( ]. _/ X) b  w
) A& J7 n% S( s: VIt was not possible to complete the request due to file system permission restrictions.
  y4 P: b8 [$ V7 n1
7 u1 U' L9 E6 g, L- ]% }5 T' L这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:
9 ~- j, F7 Y& v! `2 `
* M1 |8 |5 E; G6 e5 J" g// 到网站根目录为image及其子目录catalog提权到7779 }7 |2 Q  |2 a8 E) B) z
//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)
; p. F" }4 G: A; qchmod 777 image;
. f3 d. `: z( B2 w+ c2 Schmod 777 image/catalog
+ f  Y- s0 \4 X( X8 q; e/ t& j# b" X
// 如果 catalog下存在子目录还需要将子目录一并提权
3 b, R4 N- ?6 U0 L// 列出子目录
0 ]" D0 p' ~: @- ocd  /image/catalog && ls -F | grep '/$'3 D, \9 W6 k* G6 ~# F  }) `
chmod 777 1/  10/  2/ 22/  : o% Q' i9 _7 S# |. N

5 ?: r" I9 P1 j- _# L( a- w// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)
9 G  c& u3 E1 E3 }4 |% Gcd /image/cache/catalog && ls -F | grep '/$'9 n! a5 {! n# }+ }' r! @& z* Q( F
chmod 777 1/  10/  2/ 22/  9 Y8 |7 a  `$ R3 J! Y, X& L

) l4 ?- p$ j# j$ ^1* A: v" i/ e& h+ r8 T- A% k. g2 c
2% @+ \0 V1 `% D4 }# m* @
3+ V; E5 |3 D# k: z$ o
4; P$ c* l  j7 h* S3 y- P( n3 C
5
6 `9 b: e7 {5 |6
0 C( ^! t7 F- z% K) z9 q. \0 Y! E7
) s! A7 D: e7 |+ B) F4 D: w# s8
* I+ x% d: f7 N" l$ w+ h2 T, d9) _+ [$ W8 b: ~9 W+ i
10
6 s2 ?0 S% H' {, I5 J& w; W11) {! J. r* K( G5 D$ Z! R' e4 P
12
5 j6 D/ C6 G! n8 r% X13
0 Q5 W+ u4 A* |3 _6 T# p14
3 E; }3 G6 E$ c( S+ q回到后台检查,OK,可以正常上传了。
# ~, a" x: `9 e* @如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查+ l9 \" W& n' [5 F8 c# E- e2 x
  h+ z' Z: j8 Q2 N9 D9 y/ `
5. 列表页无法显示) ^% a( Y3 |; n0 k0 {; ?* p
控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。
6 \+ Y$ |. D# _  R( n3 U/ R6 B1 y) y2 Q* ~, i, C( p  g
原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382
2 p9 j" w) q$ z4 U4 G; `! ?: h8 C( j6 K! {
回复

使用道具 举报

 楼主| 发表于 2023-10-11 20:28:52 | 显示全部楼层
Opencart体系是近几年逐渐兴起的电子商务网站平台。其安装便利、功能强大、操作简便,支持多国语言、货币和多店铺,因此备受跨境电商卖家推崇。然而,有时候商家可能会忘记管理员密码,尽管Opencart平台体系提供了默认找回密码功能,但有些情况下用户可能无法通过账户或邮件系统进行密码找回。那么在这种情况下,该如何修正Opencart体系的管理员密码呢?下面将简要介绍三种可行的方法。office-3295556_960_720.jpg/ F. s' k0 M+ ]! W1 P/ W
& S& i6 ?6 o8 v* m8 r
方法一:通过调换域名修正管理员密码。0 Q1 c, B# [- a7 V# ]* L, ^! z
* m- l7 P& W# o! H7 O( d; j9 I' E. D- \
这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。
- F0 _1 S1 X: s( N1 u
* u0 Q5 L6 ]% T- s方法二:通过修正数据库来修改密码。. n5 Z3 G5 ~3 L  ], p
4 Q$ j  h" i$ x; ~9 ]
这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。$ @# o9 g4 J9 Y: E! M4 e

9 L, j* u) a. j7 g: M方法三:直接应用特定网址修正密码。
' r/ z- {6 v+ M" ?2 |; Z
9 a; Q0 b9 L+ B/ A可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。
7 e) V3 ^' [1 G7 N$ ]$ N! P9 ^% j4 I0 U" v5 n! _1 X: o5 N$ ?
以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。
6 B* |) U/ |2 T! R: Z' J0 t+ h% w7 i# R% q' ?+ {; [( `1 a! _
总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。2 Y0 R2 |- a' V( Y

6 l2 p" `( `' t# l5 ](本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。
/ {! |) m8 \! g, L  M" O9 l1 q如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。
+ x7 z$ }/ k) m$ t! R& T方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。0 w4 y+ B1 f9 t6 m# U1 k" p
6 v/ D' k1 g  y
PHP
# E* V, Y' b/ y0 a' S" q" fUPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1# u- t4 \1 [- ]: R
或者新增一个超级管理员账号如下SQL,然后再修改密码:
6 y" m7 N4 H' y8 L) _' m' m! [, _
$ h1 J: A' r( ]账号amdin00
; D; Q* n" V6 {
. q, o6 Q9 A! T2 h密码admin* H, X" \( Y) Y4 |' ?

7 n& a& r5 C6 l( GPHP
8 ]6 d( Z8 q  |2 }  e  ]INSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES
& \. j3 F2 x% W2 S(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');0 H9 F- U$ W* \
方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。3 v( B. k1 E2 ~+ \" i7 T" E& e* J9 z
- E* f; \- s  w) C) S$ b- v$ X
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。
+ l6 ]# g( ]( ^8 T
# I* v* {! X7 @) H  P' p2 XJ`~}2_3CPV5UBB0ZGXU4PMQ.png; [2 X/ l- v  `/ q- \0 I
! ~, T( z5 M) [
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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