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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2573|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:! b8 p& U' N, {1 t- c9 r
5 q8 P' E) }2 E, q7 G: o# e. U& ~
出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)
5 c" l8 x! w; a6 F* \8 Y1 V% G商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)
  `4 w! D3 U7 V. T- M1 l后台登录不跳转(原因是session存储目录没有写入权限)
' t+ `. p8 b: a0 b( k& c$ s( |8 n+ P后台无法上传图片(原因是图片目录没有读写权限)
+ D9 J0 _0 H: e/ n+ `! P" A列表页无法显示(原因是渲染路径拼写错误)
% Q8 O+ v- G8 C9 |! a' {. C注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6
: c7 w7 o. E# {3 Q
/ t8 q) @8 C7 O, \3 k解决办法# E6 W0 X8 _, b# }3 p5 s' J
1. 缺少php-xml扩展
( v- E7 g6 F7 }9 d根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:
5 A" |+ D8 C# ]6 E( @- [: ?. z- _  D
yum install -y php56w-xml
+ \: N# {3 P: k  [, e1
7 e- s; ~5 A. H/ ]# P% ^( M& v安装完成后记得要重启php-fpm进程:& \) O0 [4 w7 ^3 _9 k: M6 T) v
: m: f* ], V/ M3 C- |9 @! F+ D' c
service php-fpm restart
+ g. H4 V7 q" D2 C3 Z* m3 {1
$ N* g# a2 R9 O; O重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。
$ q, D; S- v" V3 y$ I" q
+ h( o( t. v" s( f2 A$ P% h2. 商品图片无法显示
8 Y- l; ~& l2 l4 E9 C用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:
& q0 }( f& T, U7 ~1 @# X. G/ T0 M4 y9 V& a, W
查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;/ O: x- E7 F! F+ ^% v
查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错
* M+ l: o2 U+ w: [% P4 ?所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。& u1 V' I0 w1 n+ _+ C' ^
再次打开网页,图片已经可以正常显示。/ T3 P/ V7 L6 v! B. Y
2 z  u' }7 {; f: O
3. 后台登录不跳转
& |4 S( \, A8 M) S后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。
$ V5 H$ w8 U" B  x( u" g6 J; I& p4 ^' ~& Q# N' J
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)
4 C0 A! `# _8 \9 [3 B1: ?( Q+ d+ j9 h8 f
找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可. W' V! m, _/ ]* I* l$ p
7 x. z( T2 G+ C& V
# chmod 755 session/
1 ]8 }8 S7 B8 [6 D1
1 w3 ]2 ~% b$ \$ y至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。
) l+ {; s; N. G$ Y( N  e0 m2 M7 }8 I' J# ~, L0 S" M
4. 后台无法上传图片
& t# E5 R6 x& K( E8 m检查Nginx日志发现的问题是:+ M0 ^5 l( y2 ~# w4 [1 ]
, j( z. a/ ?( b% L" O
[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)1 q" ~( _) H, j* t$ p$ X
1, |, K* i1 u6 H# U4 Z& P6 d
此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。* L! B; a/ e. l

% x1 T: W" [1 G1 [" m8 V7 u解决路径问题,只是其一,上传时仍然会提示如下错误:
3 i' D1 p3 l' M. D4 G/ v  m  w3 m# }) q! {9 E; n
It was not possible to complete the request due to file system permission restrictions." j. b/ x8 q9 w8 [- Q
1
$ B. x. {& i$ f' u+ r这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:
& o- M$ t2 w9 Z+ r7 w' D3 V% r  L8 O0 Y1 j- N9 ~
// 到网站根目录为image及其子目录catalog提权到777
! D# m; d+ g6 c  I( }* M4 b8 \6 C  e) j//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)
# g4 T1 w! q5 t+ Gchmod 777 image;
2 a+ w9 t. B9 o6 pchmod 777 image/catalog
; r2 A9 ^! V) G5 ^2 T) {% e/ W. h/ F8 }8 A
// 如果 catalog下存在子目录还需要将子目录一并提权
; A; L6 D' q2 a# U+ j// 列出子目录7 B: |; _/ ^! Y
cd  /image/catalog && ls -F | grep '/$'8 j' k" |4 f# d1 K/ O6 p3 e; l
chmod 777 1/  10/  2/ 22/  6 b4 K' D. R/ O: u0 E

: t* p0 K# O0 _% c  S: g// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)
: _$ [. ]* j) w) O" d' Wcd /image/cache/catalog && ls -F | grep '/$'
7 `9 M+ ?3 A' `! Jchmod 777 1/  10/  2/ 22/  
6 V$ O4 B8 D6 a; A9 D; h: ]* r; V7 ~% m+ p: u0 V$ w" [
1
# ]$ z( C* [8 ~2
3 F- c4 E5 C  o) ~7 Y3& w( \+ L: N5 t- n
44 s, C. M* S# C; G/ B$ V8 G+ p
5
2 b& Q& p4 \- H" h6
9 K: }/ O. G: R5 _/ _: }7# i" q) h  i% d5 A7 g  T
8
7 l! B; l6 E% {% w" ]' @8 N9* E0 S* S: O1 i6 H4 m7 `+ O" k
10
7 V8 H$ @, a% |& @- V, S2 `' h) T11
' [, w# T. n0 w% l" j# U12/ O9 m( C6 P* i+ i- I: ^
13  Z' J) K$ d* }
14
/ \, Z7 H: \4 a% O. J; a回到后台检查,OK,可以正常上传了。
  p" X: S* w9 x1 E/ ~如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查
" i4 B. O; E: a) i, a* Y8 z
4 N1 }8 [/ v. t+ J5 z5. 列表页无法显示" g' M/ z7 }0 m$ S5 W, `: t$ C
控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。8 v7 {% [. L5 z; r. u: J/ K

+ i- W( i6 ]  n原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382
0 j1 U/ j' s8 c6 l4 u# j- L0 Q+ H( d) |- t$ Y
回复

使用道具 举报

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

9 u( c" p, y) q, `方法一:通过调换域名修正管理员密码。
+ w! g8 B5 M% D0 v3 K+ p  ?% Q& C. W1 f0 f( X( }: x
这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。" W1 e; J  k1 }3 X

  l" m, K, x% \+ i; D方法二:通过修正数据库来修改密码。5 _* F) D2 B, a' b7 v% X2 N

) |4 m: [# o. a! a这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。' G+ ^3 d1 t8 E
/ S5 G+ S* Q# g
方法三:直接应用特定网址修正密码。3 J* o: \; A0 L

& B* ~; ?! |$ O9 k可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。9 a; D( @4 t8 P& W' V1 I' ^7 h$ w' N

2 n1 a" P6 t* I" O1 F5 c以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。
) S* V/ I6 g, }, R; L4 X
* J  y$ f! B2 Z4 q8 J总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。# K+ Q! T' Q1 J) R" L" T4 H9 t* ^0 D0 z

& m" Z- d4 u; `- i(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。- U2 \0 J- N9 F& M, P' W* w
如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。
/ T+ J: A6 }5 T- e# h+ @方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。! d$ ~) a7 m# Z) ?: l: k
6 `  h& ?( b' s1 f8 e+ U
PHP( y( a2 i" ~! y2 S2 S4 N
UPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=10 x9 H+ A/ u2 D7 L8 I. F# n7 Y
或者新增一个超级管理员账号如下SQL,然后再修改密码:! Q6 @, p8 w; t; I# \1 o

0 s( e# l) L6 B* k$ U" J账号amdin00' d2 |; y4 W5 o5 o* z* C9 i
- O+ F' L8 X+ Q" I
密码admin
8 k% ]! X, _, P0 Z  x6 r& Y& j. P/ F8 y1 G
PHP
- f( |5 V% C, T0 A% TINSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES
# x3 q. t& G0 F" D; n(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');
5 n# X7 e2 D9 E3 z方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。
  [6 B% c5 o* x. b; ~# l
3 v2 z0 l# z% h& O( W, m$ P这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。$ ?' q3 l' @6 C( ^, Y0 l

4 E% k3 E" V& v) Z6 xJ`~}2_3CPV5UBB0ZGXU4PMQ.png
$ q) M4 T8 m4 y2 d, V0 L0 o2 f8 f! }9 r8 e! u
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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