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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2572|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:' Z4 E( ]: o9 T' B- `. M2 u! J" t
0 W0 k4 `% X/ c% Z( A1 Z- h
出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)
( u5 @0 _0 g3 t% g& \商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)# z& M* g. `0 Q) }2 c
后台登录不跳转(原因是session存储目录没有写入权限)0 \* E  w) [& m7 w  \
后台无法上传图片(原因是图片目录没有读写权限)
6 ~$ G1 C( _1 M" ?. ^列表页无法显示(原因是渲染路径拼写错误)' ]0 |8 I+ q) R: l/ q
注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6% X. i# a1 B& i

! \+ S- y: ]2 f. E  x解决办法/ ]- `' E# [1 ]
1. 缺少php-xml扩展1 W% [& r- ~1 |! ^& ?+ J
根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:
$ w7 p$ {2 ~0 e: I4 a3 b2 z
5 I  z' N# d# E, N% o) P6 iyum install -y php56w-xml2 _7 Z$ |  h# j1 `% z* y5 }$ a
1: _/ H5 W9 l& l0 T
安装完成后记得要重启php-fpm进程:3 _1 j9 \3 \. [+ W, A' U# }0 ]
! a$ V& M1 o" |8 B
service php-fpm restart
7 B) e6 o- [2 p1 D2 Z3 F- K5 z+ s1
/ T1 o1 u& [* ?; |  w重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。
" k8 H& W, i! R# j0 S: v% Y) {- I( _( T% g- u0 i8 j' w
2. 商品图片无法显示+ k; c; t4 X% t+ S
用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:
9 l" {% {: {+ m  `. E- ]' O) _( @% z' E3 @, C  m0 m
查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;, q  y# H& p+ P6 o4 _+ R/ \6 O
查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错
7 a/ A/ M) v% y1 n& T% b5 Z所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。. ?: A: R# m' c' \; U0 Z
再次打开网页,图片已经可以正常显示。
' g( M% E  ]' f8 e1 |  ]: v% R7 z. h) ^: b
2 W4 P/ T$ T! \3 o9 T6 V3. 后台登录不跳转( N/ k: D7 K' V. Y+ p' D, ^# S6 Y
后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。3 q; i7 Q$ ]6 Z2 k4 }5 M  {1 N% l( D

$ M+ g0 W4 L5 bSessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)
  |) B) W9 Q4 I, w3 y, L" }12 X& K% ]1 y8 @! J' B
找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可
( s3 p, L) H! M
4 A2 Q- W( X% F( @# chmod 755 session/
, E6 A# W* H/ p1
3 B2 {6 p' d1 X5 l& E! i  h& h  C2 B至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。
$ v  r. l1 g7 A9 d. n( V( f
& }) n4 w1 u& I2 Z0 w. L9 x! C4. 后台无法上传图片# T. }% Z' j6 u% [  {% e$ N
检查Nginx日志发现的问题是:  [7 Q; T# `7 r; F2 e
; Q9 y# r4 y. u: T! d4 q4 q! P5 V
[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)
8 r# G/ J4 l! o/ @; Y4 }; u1* F. Z; D& Y. S2 ~& q8 e% p
此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。/ @5 ~- V. L# ]3 R8 T
- O3 n$ k) Z0 S5 V. D$ P" `$ w" w
解决路径问题,只是其一,上传时仍然会提示如下错误:; R* A8 x9 q0 O: @" H

6 Q2 w" q. g/ L1 BIt was not possible to complete the request due to file system permission restrictions.9 k: A% F0 L6 p6 x* W
1, j3 n2 T. T, Y. Q, ?* @
这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:5 Y' g5 F1 Z2 K# U* b- l

2 f# z: Z1 `* W5 u' u// 到网站根目录为image及其子目录catalog提权到777( \: s8 D- ~) Z6 F; }% }
//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)
4 w0 K4 D3 w" Ichmod 777 image;
" x" k; y0 W, ?1 _; Q7 P/ |& |chmod 777 image/catalog& N* _$ E/ O8 X: O# c% X- g- L8 E

" w* \, e/ L" e- f; a8 H( n/ j// 如果 catalog下存在子目录还需要将子目录一并提权9 z* y- o( P9 o* |! U3 g
// 列出子目录8 r# q) g0 e. M  U7 C
cd  /image/catalog && ls -F | grep '/$'2 X! t* H2 W7 |9 G( T& j& r" j
chmod 777 1/  10/  2/ 22/  ; R  Y7 s- W( j; d' ~' e* A: X! Q% H3 C
1 c0 b: c' m: o% p
// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)
# {3 w: q, @& ?! G; @cd /image/cache/catalog && ls -F | grep '/$'  {) H2 v% I( j. E
chmod 777 1/  10/  2/ 22/  % Y- w9 i$ E) z% \* W4 [
3 M+ C# t: X' j- O
1
; B7 b6 i4 h) J' |  l! N2
5 Z. |& V, V' j# M3
' T% w- \2 _  t( n" H47 e! a, g6 l( l4 c
5
+ B" ?6 D7 M- `# H# Q7 j5 X6
- w4 d0 ?8 S, L6 a2 V+ D4 K5 X+ o6 C79 Y9 s" H7 v2 t3 u3 j, B0 M
8
- l7 J+ p. c, V; L2 n: j- d9% o. h" S% j! ^. r
10
, c  [: z; B# k& O* @118 i2 m& H* ?2 _% x! A( {
12
! U  P; D, h( r2 S" L4 i138 o& r9 K# q& C8 N8 F# L( [
143 k- ]$ x8 E9 c# N' S% p! _
回到后台检查,OK,可以正常上传了。
3 f. a- ]; Z5 p) {如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查: K) B8 d3 G6 s3 e

' N! o# P: N: o, ?% E3 _5. 列表页无法显示4 V# g  x( |0 t4 [1 Z
控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。
8 W6 H& b9 l" q5 {( B4 `: q, @% h  _) ]5 X1 W9 E
原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382) d$ r) E; P8 @% c# V3 M

) ]! Y' O3 @- s) h, o( m
回复

使用道具 举报

 楼主| 发表于 2023-10-11 20:28:52 | 显示全部楼层
Opencart体系是近几年逐渐兴起的电子商务网站平台。其安装便利、功能强大、操作简便,支持多国语言、货币和多店铺,因此备受跨境电商卖家推崇。然而,有时候商家可能会忘记管理员密码,尽管Opencart平台体系提供了默认找回密码功能,但有些情况下用户可能无法通过账户或邮件系统进行密码找回。那么在这种情况下,该如何修正Opencart体系的管理员密码呢?下面将简要介绍三种可行的方法。office-3295556_960_720.jpg6 X& K* ~) O4 U1 w8 u! J
, [6 v) ~# O! U+ b' ?
方法一:通过调换域名修正管理员密码。
" Y1 A, u, S. C6 h1 r) v! U
+ G" A8 z+ n3 z1 u这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。
& c+ j5 p: h- B5 O# m
: j- M7 @& m+ _! b) E方法二:通过修正数据库来修改密码。
6 q6 t7 z1 I! D! ?
+ j) n3 V4 H+ G5 o9 I9 \这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。
& K6 E: ?, [& Q7 U6 W
7 Q& |8 x  o* ~7 ?! b% n# c方法三:直接应用特定网址修正密码。
: t4 V2 g+ I: `3 K7 R9 x7 w2 F2 ?$ U% W, R3 [" q8 D" o) b
可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。
2 `8 P- V9 U3 {4 a% n5 U' w  \$ z3 k; }, L% ^; V
以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。
3 y9 T0 [* `& i  {2 Y3 {% ?' h6 w/ |2 v' j, x: ]8 b3 a7 H6 w* ^
总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。
; P2 {) I) W; n! i7 ^' Z
$ x  ]6 W/ I9 J1 W' I5 J# _+ p(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。$ l* Q. j8 G- t8 g$ Z! [+ [
如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。
3 E+ I7 M$ M" \; T) y& R方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。& W2 J8 H) z0 S, Y! L: P; b+ {

! x9 n: Y9 j+ e  N3 U2 hPHP8 U9 x) C- @- Q' N" R8 G6 H
UPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1( w7 b& A) L! e; m6 |
或者新增一个超级管理员账号如下SQL,然后再修改密码:1 B% q, i* A# U" T* I6 S

* @8 e- |- Q2 f1 D. [0 i账号amdin00
, ?0 u! o$ A6 E1 g. l! ]
2 `+ l+ g& Y/ y; Q# W7 M- T密码admin
0 `" K% u) r% ^( g9 f
  a3 }7 S% m# A8 W( G5 p7 u& x1 yPHP
4 G. M; s9 J* m1 JINSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES# [$ l0 _/ m2 y( Q, O- m/ T
(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');# n! M0 n+ p8 G# N% O5 H- r: R9 w
方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。
$ }2 [4 R, W4 l: D4 T6 K$ H5 l7 K5 T1 F9 q, T/ S7 y& B+ G
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。6 K; V0 X' |' l6 B. s8 d5 G' k

! A7 @5 `* V4 |" s8 N# ~1 BJ`~}2_3CPV5UBB0ZGXU4PMQ.png
8 k0 _' T/ {) D/ g9 t3 i' X5 `: b! q/ R, c7 u- F
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-19 13:15 , Processed in 0.083982 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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