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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2400|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:
" {# \- c! U3 E/ _3 m& v
6 x8 m! ~4 Z; @! Y8 \9 U! z出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)" H3 l2 E' N- v7 j& X
商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)' p& K+ y/ b" c
后台登录不跳转(原因是session存储目录没有写入权限)9 G1 Z- l$ ~9 [  l2 X& i7 I1 ~
后台无法上传图片(原因是图片目录没有读写权限)
& y( I5 x# U& h" E2 K列表页无法显示(原因是渲染路径拼写错误); h5 Z+ H5 a: Z( I2 P6 a
注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6
5 \* M5 P7 G1 H+ B' p. d+ a3 P1 L/ ?4 w! g5 Q
解决办法5 v: N/ e& D& y! a  f( \1 t
1. 缺少php-xml扩展) m1 g4 K/ A0 H2 E& F9 H, f
根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:! g3 P( d' R$ a0 p/ Q: ^

7 ~, A: _1 c' P' h$ ]yum install -y php56w-xml  t$ |" D( y+ A" @
1
6 Q( c& @5 ~( |. w- }2 }安装完成后记得要重启php-fpm进程:0 F9 v$ L- N5 ]) X0 c4 e2 z: S
/ u+ X& S$ H/ y) O9 U' Q' f8 U6 I' }2 x
service php-fpm restart
/ W* X/ v8 T( _- \& N0 s3 f6 c0 W2 q1
# j8 d  z, ]" u: U( x5 \重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。5 `' `" r6 v  h! q
; y! m' J. _! }, g9 R( ~9 b
2. 商品图片无法显示" M: |1 G6 j) x. R0 d' f, V$ x
用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:
% H, d) v5 m9 [7 u" P) z# t5 D2 J- A
4 I8 {# w& a+ J. M* N, E% ~6 z查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;
5 ^9 O/ C2 F% r: Y% C# p& E查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错+ s: }4 }  u1 G0 {
所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。) Q" P! {* C" M/ D0 S2 ?% u7 `
再次打开网页,图片已经可以正常显示。2 |0 e9 \3 F2 T- [+ @

! {& r" o4 [  o* f  S3. 后台登录不跳转
/ q  e" s% P- W6 F/ g# ?后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。2 u! G% o# p% x: ]8 W/ y
" D9 V+ I3 A, L) j0 b9 T1 p
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)
  e: ^- H# x. O1 @7 [* m1
. ]6 V  b! @" v5 \1 @) k. ~- ^6 N找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可
& U7 i, t: p# |. @" o/ @8 J+ c8 z) b
# chmod 755 session/
) F1 M0 R5 q0 }  {. \- @9 f- X1
- n. n: X$ v) O3 W8 C至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。& G; w7 h" L# e! s, W9 a

5 r1 g3 B( {/ R4. 后台无法上传图片6 F9 ^* U+ {3 x; x& J$ c9 n& V3 L( ~
检查Nginx日志发现的问题是:
9 ?9 N; i' X: L, D
+ Y* D2 P( j' [& D9 E7 c& y[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)$ F" ?3 `- L2 m7 W* F
16 i* L: K3 ~$ [$ e
此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。) u) L) h' {0 q: m: G4 u* s

2 s' @' Y! Q8 B  Q1 f) _" J: r  k2 u解决路径问题,只是其一,上传时仍然会提示如下错误:/ q" m! u8 }6 D* L8 H" ?) Y* P

* D9 K8 m- Z6 j) k" FIt was not possible to complete the request due to file system permission restrictions.
/ _, W  M. j% X11 F! _8 l, s/ k  a- p
这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:3 y/ f8 P2 _4 C( `

# v* p* h1 D- |  V$ N& X7 X& k// 到网站根目录为image及其子目录catalog提权到777
$ f5 [( L' L2 E, k+ \//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)8 n) \! p- a4 n# o8 [
chmod 777 image;
6 @* f. P9 s6 fchmod 777 image/catalog- Q: \8 i% a' K! Y3 V

7 |/ t5 n3 T$ h! @1 f" N/ R// 如果 catalog下存在子目录还需要将子目录一并提权6 _3 X. {, T7 W: |# ~( G* R: J
// 列出子目录
$ Q" f# A! ~- ~' ]! S" c  wcd  /image/catalog && ls -F | grep '/$'
$ v% A* j( b- T  i/ Ychmod 777 1/  10/  2/ 22/  
* i; e+ I# F% L4 }( L" b1 R* o
1 W7 h7 l3 S' H, u1 l/ H// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)
: K- i% z; c6 q4 S! Gcd /image/cache/catalog && ls -F | grep '/$'
. {" o* o& b8 Q/ p' R+ e# u# \chmod 777 1/  10/  2/ 22/  8 H0 I* G, V  g

. `: }9 w) Q, J. t1$ o& f( g0 P. W9 V1 P8 X
2! _2 |4 w% j+ \6 n
39 K5 A& y' y% \9 G3 f4 K
49 I  ^  M. T9 T
5/ ~' F+ L; q2 K( y2 I* P# H
6
* E2 e8 r  }1 Q% Q7- P% J. f! V5 Y& v" O7 P" s1 T8 ^
84 u9 x4 s/ N6 C: v7 [
9
' Y: `) X9 y' [+ u. ]10
, e" f4 _1 x% L  G3 F! H11
. |8 f4 E3 ]7 n9 z( z+ P) ~, q12& t+ P4 x3 [; j) A0 J1 w. [
13, u6 |: f2 d/ I# G
140 B/ x. H& _2 n3 x
回到后台检查,OK,可以正常上传了。
. g8 d% u! w( z) W! X' Z6 X7 T如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查# v* J' k6 H. @; H
: O, D& ]& n! P
5. 列表页无法显示! n1 N$ H) O" r8 A1 M
控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。& Y$ A+ M+ m! H) `* C* h

& s, D' O9 m# f7 a8 D9 r' K* E; f原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382  ?5 `8 Q5 r# Y2 |

$ W" L! X2 S. t) ]9 G
回复

使用道具 举报

 楼主| 发表于 2023-10-11 20:28:52 | 显示全部楼层
Opencart体系是近几年逐渐兴起的电子商务网站平台。其安装便利、功能强大、操作简便,支持多国语言、货币和多店铺,因此备受跨境电商卖家推崇。然而,有时候商家可能会忘记管理员密码,尽管Opencart平台体系提供了默认找回密码功能,但有些情况下用户可能无法通过账户或邮件系统进行密码找回。那么在这种情况下,该如何修正Opencart体系的管理员密码呢?下面将简要介绍三种可行的方法。office-3295556_960_720.jpg& q- {* B& k4 [

4 j! \5 v3 g/ D方法一:通过调换域名修正管理员密码。2 e+ G- O" X, ~; A# Q4 w
6 Q  s% A6 p6 J
这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。
! F' B& q" w, S  V2 q% r2 q  Z1 f* k
% H# @& [$ k. c" E1 q! |: c- Y方法二:通过修正数据库来修改密码。
( r6 f& L" P& o6 T  ^4 l. i+ Y" K+ z* s. ^6 H
这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。
  k' [6 y+ k" k8 K8 @5 X" b
" R; N* r9 i! c1 I1 L% y; \6 r方法三:直接应用特定网址修正密码。8 C+ A- ^' y0 {8 G5 l! _

8 f2 L6 _$ r- @8 `* ?4 R可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。7 g% E: J. E3 m* M. v

4 l; p  [3 |5 K6 j/ k以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。: }$ e  _" G4 l  C& k

7 R% ?# t, u3 e总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。
( }9 A* U* B5 ^7 [0 m7 i0 n% M& S
(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。
  ^. u  z% ]( w- y# T如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。) l% l# @1 K8 f  o: z
方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。
( P9 [) Z" W/ }. v' ^' |+ M% A8 w# w) F$ w
PHP0 Q+ E. f# B( ?! H
UPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1
/ v$ T) `2 C; d$ A或者新增一个超级管理员账号如下SQL,然后再修改密码:
* X1 O1 f8 X, ~, @# `% O. Z  m1 {2 K5 u1 L
账号amdin00/ @, b" d6 K# Y' s# k9 L' l
8 g$ U7 O  ^7 e8 z/ d
密码admin
. H' l+ O# F2 r
9 n, |4 ^& h3 |  b& e  X& Q2 KPHP
  o* t% _" ]7 B2 ]1 o% i9 B8 g" BINSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES
% n7 R- w3 v4 _* @' c5 z(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');
6 J' e- t# m- u; d  a) n: _方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。
4 ^' }( Q6 N6 j; T  X8 A- X5 |/ X$ r2 {# l  F- c4 V& B1 ^) r
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。
* J" C" r: H, j
6 }2 A+ J3 L- ]3 K& N, N. w% HJ`~}2_3CPV5UBB0ZGXU4PMQ.png5 ^. ^' I8 l0 R' g! E0 w

5 `+ d5 J, @- G! c" g% K
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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