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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2575|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:, z8 _' y6 c& s8 F) |6 R! j7 P

; P* L  n) K3 S( S9 i- z7 t! A出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)7 P6 j: u* ^0 v) ~/ c
商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)
2 [( l1 J' |- [5 t. Z后台登录不跳转(原因是session存储目录没有写入权限)
% i' W7 C7 v) z% O, C7 }" j3 v后台无法上传图片(原因是图片目录没有读写权限)
- q  l3 ]. A5 M5 x* E" \1 ^列表页无法显示(原因是渲染路径拼写错误)% ]$ w! u6 f) F
注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6
* ^' m( i2 `  z9 g& b# l' J
2 J' o: T' y4 I& d. v4 w解决办法- \# Y) Z: U4 e& W0 u
1. 缺少php-xml扩展1 y9 d, Z1 `. y
根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:' h9 i1 l9 T" v

% n  @5 O+ |' I. Myum install -y php56w-xml
: j" M. k8 H1 J0 b8 k1
4 O, g+ A' R$ J2 @安装完成后记得要重启php-fpm进程:
! @+ h& E' s) {; H# w6 N* K- C; a& M5 O0 k: ~8 f
service php-fpm restart
' t) p. `: \4 w: V: I1
+ r5 Z6 P* I$ b" ]5 c' `8 d重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。
) c4 p! M3 c* _* W" d
% e$ W* V$ V; ]6 e/ }% s2. 商品图片无法显示2 ]5 @4 I0 A2 D$ F% L
用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:: C) H& ^. C! y

" h! m8 T4 T& I) {9 @! V2 y查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;
# _2 n. u  O. B' \. E4 Z  M查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错8 x" W7 k$ i( \( c
所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。& S2 M! v* P- U& k2 Y
再次打开网页,图片已经可以正常显示。7 w/ B  c* Y/ z, T$ U/ S# y
: c/ M  D8 ^  M$ r
3. 后台登录不跳转
' f! v9 j, X1 B4 A2 c后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。8 f6 T' Y# [- m" m5 B
9 C5 `: ?: p: |( G+ C2 Z9 K
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)
/ M) j. d) I- g1 Q1- [2 K7 f% y5 @1 Z" {
找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可$ \, b; Q& p% v) f4 l! ~& w
! n% {+ V4 Y) n# l  f. Q
# chmod 755 session/
- Z/ R( _. N$ j* z8 o1
9 L3 Q3 Y8 y5 t" ~6 t至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。4 ~# f. H, O3 m. O" z+ l+ p

4 Y& t8 q  G2 x4. 后台无法上传图片
, [& f- m% G) x5 E6 p  k检查Nginx日志发现的问题是:1 S) ^9 C* [; I  w2 P% ?0 B& I9 K

$ A9 p) L5 T6 n- m. d8 X) {: U: m[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)
0 C1 ^! T3 ?8 k5 g4 Z. I8 B1. d+ S! m2 Q5 q! L6 M3 L1 _
此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。
! s# a: I. s! i5 C
+ G5 a% P3 `8 P( k/ k解决路径问题,只是其一,上传时仍然会提示如下错误:
: N) x% ?; u( H. P/ k! Z& z+ ]1 K8 p4 o  g) [% u3 f
It was not possible to complete the request due to file system permission restrictions.& h3 w8 ~7 M" b8 ]  m
1) X# M" x, c* B
这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:
' |, `" ~; \* a3 c2 s8 }2 [" X9 K; E( I) u3 t/ b8 A
// 到网站根目录为image及其子目录catalog提权到7775 r3 F& E' R- k3 @
//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)
: g) \* @: j3 G, K5 Z( mchmod 777 image;5 U  c4 S0 Z* [* S+ b0 m0 e9 a. Y% H# X
chmod 777 image/catalog
- D3 ^' i3 C# m. G3 t$ S
3 l9 g0 \- h+ l8 P* O// 如果 catalog下存在子目录还需要将子目录一并提权) V% Q" j6 i8 x6 n. r4 b) C5 B
// 列出子目录' T0 }/ \4 _% ~4 B$ F
cd  /image/catalog && ls -F | grep '/$', L4 T0 ?: p- W7 n2 f
chmod 777 1/  10/  2/ 22/  
: r+ {5 J# {- }4 E
. Y. `8 q6 {1 t6 v3 D// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)* p% Q3 E  o* I  ?5 K
cd /image/cache/catalog && ls -F | grep '/$'3 ?" e/ k7 x6 n
chmod 777 1/  10/  2/ 22/  : ~- X) W  ^# H  x% o! l8 R, t
; i8 k1 h" y' {& G2 x# p$ y+ D" Z, [
1
  ^; H- }* L1 [! d2
) K' j$ \% C: g8 w9 v" w. R3
3 }# t6 h1 e1 M4) i  b$ o6 o0 G2 W- `
5" ^9 d- z  C8 I6 S  K$ |
66 T$ h3 K2 O- E1 h
78 D3 Y2 j, n( o4 p& s2 c
8( J& W* s; i" I/ Q2 t) D. c% @
9
8 e* c7 e  M  r6 z5 D10" [% ~- {5 Z% f9 Y* o7 S, s# b
11
; f( g! ]" @. v1 p, |12
* q7 D5 T' f7 `8 K13
: q6 N. W6 i% V14
: G1 O$ V# c5 D" o, j# n. G回到后台检查,OK,可以正常上传了。
' X' \) \8 W% p8 G如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查
' Z) l- [+ C( k+ B2 J7 K: W; x: u* z* s# l: k' Z9 f
5. 列表页无法显示  R) r& W: d8 |7 M5 V
控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。* Y) w" [( H5 o1 @! b; L) B0 M

6 C# n$ m% B* O: b' z, i原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/907203823 K2 ]. R! w4 i3 f* A5 ]
% h# a0 a7 m! C+ R0 @
回复

使用道具 举报

 楼主| 发表于 2023-10-11 20:28:52 | 显示全部楼层
Opencart体系是近几年逐渐兴起的电子商务网站平台。其安装便利、功能强大、操作简便,支持多国语言、货币和多店铺,因此备受跨境电商卖家推崇。然而,有时候商家可能会忘记管理员密码,尽管Opencart平台体系提供了默认找回密码功能,但有些情况下用户可能无法通过账户或邮件系统进行密码找回。那么在这种情况下,该如何修正Opencart体系的管理员密码呢?下面将简要介绍三种可行的方法。office-3295556_960_720.jpg# l  |8 G$ U6 N" q: n, g% r# p9 E( @
* r- {( G0 o5 a, }
方法一:通过调换域名修正管理员密码。
8 h/ y. n0 M0 z0 i; Z& P
/ }2 Q! _# N- Y) x7 T% K* p! h这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。
+ F- d$ f% L+ G, B" x7 P9 n$ Q! q  R' V. `  R
方法二:通过修正数据库来修改密码。! e6 W3 e: B' W

$ @' P4 P8 G3 s这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。
3 R  Z) |: O- Z; {" G. D3 {0 E+ Q0 m) H2 I8 I
方法三:直接应用特定网址修正密码。
6 l8 W7 \/ \. l3 ~
# A/ C; O8 `2 ^可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。6 D" d! D8 N' c) i

2 E$ L/ o! f! X& `以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。
& ^* ?- C$ a/ g! q) L& y1 R/ B/ ^$ [5 z: t+ D. r) d
总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。- W7 O' Q6 M. `8 F3 h. K+ b7 L
) C; S3 M3 a5 x7 V9 E5 F
(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。
! O, `/ T1 @/ ?" m7 p$ Z4 @# U1 F如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。0 f6 x6 m2 a  y# Q
方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。2 Z8 D' m/ K$ L2 K

- J+ O( I4 r: L/ CPHP6 ~* K) l  i$ o5 h5 v$ u' v
UPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1
+ t5 F: b+ s# B* x或者新增一个超级管理员账号如下SQL,然后再修改密码:1 d9 e# o+ U' J
# E$ P- ~: E  z5 R2 s
账号amdin00
2 V' a  F9 z# ^' }# B( `# e/ p5 ]( p4 M6 u7 \+ A
密码admin
  o1 w* s8 u4 a: V+ \  ~7 W, ]; o- e' K. N! V8 i1 H5 q
PHP
2 }; D  k. q  i( |- [0 |+ XINSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES
$ M' @: \  P' ]' I(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');
1 G  G" m/ K- _6 A* l" w- F: r方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。
8 b+ O4 P* ^$ f: c5 N% c/ L1 w$ U2 r4 Q
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。* W3 a. T; A4 z: k& A, G- E. J1 F

; a) w9 |% W/ Q* E2 uJ`~}2_3CPV5UBB0ZGXU4PMQ.png
$ r" f+ ~- `) _  w' g% c$ U
; \# ?) n: G- @' j4 \
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-19 19:05 , Processed in 0.090992 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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