找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2805|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:, ^7 x3 {8 Y! a. C$ u

) x, T; Y% p5 B4 g. U5 Q2 H出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)7 w0 k0 e% @" W/ F
商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)5 B& j% O: H8 V/ U2 w0 Y  {/ h: W
后台登录不跳转(原因是session存储目录没有写入权限)
; M$ c) y; @$ E; p1 q后台无法上传图片(原因是图片目录没有读写权限)' c$ U- l3 ?% ^
列表页无法显示(原因是渲染路径拼写错误)
6 Y! `; {" f  K" ~' Z/ Y( i: p  I注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6
0 \- W1 P8 G' |' c7 _
7 _/ e2 N, R& e解决办法: ~1 u. z& R# f( F$ a8 a( s! ~
1. 缺少php-xml扩展
/ q1 x+ B, X$ \7 {2 j6 c根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:
' K7 Z& k. {, j- L4 {0 B2 n
- h3 I, {. R: Y5 ?+ f  @! M9 |; `yum install -y php56w-xml
( C) C  c$ Y9 x$ s; {8 J. Z17 d9 R6 e, K0 _5 n# w" i
安装完成后记得要重启php-fpm进程:( W8 e! y- D1 v) C7 d
+ ?! m+ r# Q4 t* C6 G% s% q1 N
service php-fpm restart
3 L8 e& Y! l5 s1 W& j) }1
" m) j( P8 w3 j  l重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。5 N. c% }- z8 a9 ~) r2 H& X" e
1 I# x0 `' n- V+ u+ `: o+ ~
2. 商品图片无法显示- C; V4 r- p/ L( u2 ~( W* A, K/ f
用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:9 H; e9 @0 t3 B- L
2 T0 q& w+ r7 [; J, x* t
查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;/ Q4 k# C7 w) \% H" }  R3 ^1 F
查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错
7 V  u3 J2 E# S3 p2 E) h% z所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。
! Q, e6 H* }8 _# V( R6 Y再次打开网页,图片已经可以正常显示。
$ [- J$ ?8 X4 T
) |. I5 y; u0 v  ]+ a3. 后台登录不跳转# i6 a3 G( @, |* @& \- O3 H/ c
后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。* r% Z: w# T6 q, e/ n' }
. o0 B4 r8 r) J. y
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)
& n/ ~4 O! ^) H; c1 q( q1
5 T5 h7 w0 C  p2 Y6 f; e+ [找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可# b2 e" w3 G) d! {+ U6 f
9 m; R" ^3 f2 `
# chmod 755 session/8 |- q  F) V. @) O1 I+ Y$ t3 K
1( s0 ]$ j$ p  W
至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。
, `& v5 _8 a+ y2 K
8 \" r6 G$ w2 T+ k4. 后台无法上传图片
3 m  h8 x& m- g4 W; U: x; ]& O检查Nginx日志发现的问题是:8 e7 ~" h- W& R. ~8 \

, }, I- s2 Y3 n4 G[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory): i# x" P! |" s& J
1/ p5 ?6 u  d, O+ w& L# M$ k6 L
此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。2 l* ^" K% W: m/ d& y- t
# G* G) n; h# I. {
解决路径问题,只是其一,上传时仍然会提示如下错误:& R5 [1 j/ f3 `" W; w

+ L0 H& K) S) c( h7 GIt was not possible to complete the request due to file system permission restrictions.% _! B# L5 ^$ e9 |$ @9 w
12 t5 ]7 m- o! ]) a1 M# R7 l4 i
这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:) |8 O0 K1 |( E& w" j

: o! K! n" ?% k1 {3 F4 P8 }6 s. z// 到网站根目录为image及其子目录catalog提权到777
  x1 w2 o$ c" K- h2 j$ {, r* z//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)( l$ }( y, a9 g- A7 x% t
chmod 777 image;
" d" R& i. Z0 C; ]2 q  kchmod 777 image/catalog; w* k7 X* g+ J9 x) m
2 J) w8 C, }  \2 K* }" ~
// 如果 catalog下存在子目录还需要将子目录一并提权
; X9 P7 t5 ]) w* M: t3 A) w// 列出子目录
) K) X: h7 w" f+ d, H  |cd  /image/catalog && ls -F | grep '/$'& f  x8 O3 \$ g$ q, l2 E
chmod 777 1/  10/  2/ 22/  3 [& b0 d& Z; ?/ y. D

7 m) H3 g3 C5 |: b, E+ f( s// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)" o" O! Z+ i; F' ^& p  \
cd /image/cache/catalog && ls -F | grep '/$'
2 C1 R4 D7 x1 S! P! [$ {chmod 777 1/  10/  2/ 22/  
# U% r% ]/ g  ]
1 E% S. y. n- u+ d1
' k$ [/ F% r4 d" ^2
% F' ]8 R6 y: @$ O3
% K! O6 x- H! d9 g$ q4
5 m8 h  ?+ |8 K7 J3 V5  t7 h. a; ^7 l1 W* c  m+ z* a
6
  i! q" t; k# `2 p2 G- i7
/ {* Y* l! B' M/ a8) Z. }3 x3 D7 W4 t3 t; c; t
9# A4 j* ?3 A: k
10
7 U( X$ E- @4 O( x9 t/ k+ c. F11) o6 B! x+ X3 q% N7 G" A
12
) }5 f. O3 X. E13
! Y$ v+ y) P' S& l0 [/ S" |14  r! B. \/ Z, B1 X- i1 F# |
回到后台检查,OK,可以正常上传了。
( N. S9 F7 M/ i% k2 {如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查
7 T% @1 A! d  @9 e+ r- ~1 m- A6 A  U$ m, w
5. 列表页无法显示& A  _/ i  w6 P! K7 o& ~. F; B
控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。4 o% x7 ^: K5 y# P; I
- X+ q- {& w. D1 r( |9 o* l4 s
原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382
5 m* K2 s8 f+ j5 w3 h7 f0 [& L  J/ y. |, i; D. Z4 c
回复

使用道具 举报

 楼主| 发表于 2023-10-11 20:28:52 | 显示全部楼层
Opencart体系是近几年逐渐兴起的电子商务网站平台。其安装便利、功能强大、操作简便,支持多国语言、货币和多店铺,因此备受跨境电商卖家推崇。然而,有时候商家可能会忘记管理员密码,尽管Opencart平台体系提供了默认找回密码功能,但有些情况下用户可能无法通过账户或邮件系统进行密码找回。那么在这种情况下,该如何修正Opencart体系的管理员密码呢?下面将简要介绍三种可行的方法。office-3295556_960_720.jpg
$ c# v6 k5 L2 q; U- U* T+ o2 c, Q; m; L# B8 G  I
方法一:通过调换域名修正管理员密码。5 M4 H% `% J9 Z3 f# ~) H+ }0 d" ?% U
) S! H  z% w+ v3 T1 r9 j
这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。& N, z/ T! {$ Y( r% B# d
$ r% u; i0 c6 z! @
方法二:通过修正数据库来修改密码。" k& T4 ~5 ~" Q! X

6 `- ^# A5 ^- B1 \6 J( \这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。+ j+ J, d, Z4 _' ^/ s
" B' ?1 H2 C0 `* f! I# k
方法三:直接应用特定网址修正密码。
; D1 Y% x/ @, n" e0 o  N
3 C8 T* }8 E; [0 t4 |. C% G可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。$ C$ _/ [1 y( g' I8 c) K
- p" m1 f" @% F5 X' R$ i- B: Y# n& y
以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。
: r; j* P" o8 D3 @* p1 ?
: C/ `8 S% x$ Z6 Z$ u& v总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。
; N8 h0 E. s; G( f; p3 j; C$ C* s; f" a
) I9 d) j2 ^5 Q; v* Y  O6 R(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。
( `/ k) }6 a0 N0 ?% Z如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。
. {& C7 P0 s9 e% @3 e方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。' n( a: ]7 L6 b% r4 A  q, e2 W
  k. _# r9 r$ G1 S
PHP
1 K" K( o" _% A! b  mUPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1
4 |" ~8 |: @- d# A3 }. r/ k9 M或者新增一个超级管理员账号如下SQL,然后再修改密码:
, F- x/ {8 S6 ?& A7 U. s1 ~4 w9 k: o; N0 W0 r% n9 j+ l
账号amdin005 W% ]$ n; f& h! B; u

! q" \, T0 E9 Y- H6 K密码admin
$ d- U  f0 @  s' q8 I5 |5 a, U, y. T) i
PHP
: o. t, J* g! @, W1 N. BINSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES
6 I" f& Z. g5 s- j(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', '[email protected]', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');
! U" ~0 J& ~2 ^& T/ d- u0 U方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。
9 F+ D- E0 D( o7 c/ p' B1 ?5 i6 [; L- _5 N
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。% t. {; f0 ?, t4 b5 c  \

3 h/ p8 ], V: @7 H& e9 |J`~}2_3CPV5UBB0ZGXU4PMQ.png
) @7 T5 F- A+ R1 k( M/ e, u. m8 ]% m* u( C7 t
回复

使用道具 举报

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

本版积分规则

QQ|手机版|赛格电脑 华强北 电脑城 南山赛格 龙岗电子世界 龙华电脑城 沙井电脑城 松岗电脑城 pc4g.com ( 粤ICP备16039863号 )

GMT+8, 2025-8-29 15:11 , Processed in 0.091086 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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