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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2395|回复: 2

OpenCart迁移

[复制链接]
发表于 2022-8-11 15:20:28 | 显示全部楼层 |阅读模式
今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:
; O7 W, M8 _: T- D
  h0 m* K- E% k# `! k: e出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)
% P/ N: t( k) K' S2 y; U# y3 J商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)
/ M8 J! _  @+ s: P$ W% ], v) Y后台登录不跳转(原因是session存储目录没有写入权限)& Q" @/ Y' O& c+ `
后台无法上传图片(原因是图片目录没有读写权限)1 ?! p' u% ~& m2 q9 @" Q
列表页无法显示(原因是渲染路径拼写错误)
9 F$ f7 b* C$ u( r1 z注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6+ a) s, u# z5 V& X$ T; O8 J
/ C6 L! C3 Y. d$ U. L6 }5 O
解决办法& Q1 |5 s" l- ^
1. 缺少php-xml扩展' r0 o/ {$ R  G5 Z' W+ T
根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:
. [+ K9 t& F: \( T: T* c) }8 E
' q( D3 C& [0 N7 O% Tyum install -y php56w-xml& x$ l# y* ^- A9 B; r& c: k
1
2 U8 D) m7 n9 z& i* F安装完成后记得要重启php-fpm进程:* _2 ^: U7 M8 P# z4 Y3 J
. x7 i+ I1 _! I1 n2 A
service php-fpm restart
! S# @0 m' r+ ?% \9 j! e1
: ~, T3 Y3 b# o$ Z8 d$ x重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。/ ?- O9 z9 N) ]' ]/ E: R: Y

: ]. u$ B" ~6 g' v9 o1 s* I- r2. 商品图片无法显示
4 l9 s% g9 S4 V% ?+ P3 o用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:! V, B/ Z0 A& P9 p
. ?- g8 @3 Q5 z+ y% f# p- i
查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;0 M; _  x- `- C9 n, F# q' I
查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错0 @, }' }0 q( K8 y! @5 o4 [
所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。
/ G; @( `' f, M# q4 `) x再次打开网页,图片已经可以正常显示。7 c% \7 O& B) C2 |; r7 i
1 [" J/ H+ m. q) s
3. 后台登录不跳转1 C1 ]3 h7 m+ x0 l& s/ C
后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。) S; p& Q* c. G
2 S5 i  N% l2 |
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13): T$ O7 t- k3 [
14 @, O4 v; F: p: N, y7 K& N" {7 h
找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可6 k9 Z# V1 q; d

; Q3 s; n1 e# a: U" Z" P# chmod 755 session/
0 Q5 i, o1 M0 s' d5 @4 C7 G1! G% b; b( E. t! C2 B2 V
至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。+ B" ^& s$ F2 z* D# d% j, I3 R, V

+ T0 `- m# {9 |: }3 t4. 后台无法上传图片
, e2 }! G" R4 [; W4 F+ R检查Nginx日志发现的问题是:# m4 }2 T4 G) k/ `

# X, L, h9 f- s! K: ?[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)' i0 @# I  z1 |
1- \9 C' V. Q# @
此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。
6 x: r( L( O" a) u. E! r  B, F# f, Y' m4 j
解决路径问题,只是其一,上传时仍然会提示如下错误:  N* l( f6 G. b+ m1 v8 R  s

0 g1 ~# V( w. k: M5 C+ Q( D+ u. T$ b) jIt was not possible to complete the request due to file system permission restrictions.
" M# H5 A$ x4 V! h) G0 L4 p- Z1
; v3 x) T" L$ a4 @这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:
: S. }6 b; N) L/ s) H' y
( I( r, s4 P( R// 到网站根目录为image及其子目录catalog提权到777
. v% q) P$ `; f0 |  @7 ?6 \5 C1 y* y//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)
& B0 T% m0 \' x1 C2 b6 _) schmod 777 image;
  W- A0 d0 Q/ y8 F) Xchmod 777 image/catalog% q0 {, r. G# ]' [4 r* `
& l" u- Y6 L2 ?+ E) P/ V
// 如果 catalog下存在子目录还需要将子目录一并提权
# k: W) `* z. M/ x. n" k// 列出子目录
3 X' e, L6 ~: ccd  /image/catalog && ls -F | grep '/$'
7 ^! ?% v1 L) v2 ~chmod 777 1/  10/  2/ 22/  9 |# X8 a2 B6 c; f: |7 K

) Q; V9 b5 _* @5 y6 e9 c// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)
: D- y/ W9 x8 G  `3 fcd /image/cache/catalog && ls -F | grep '/$'& ^  t' J3 l8 E6 Q/ o
chmod 777 1/  10/  2/ 22/  : T" c; J1 t% T
* c) A& j4 L/ B" U
1
! R  m+ v" m6 R& w5 S+ |3 n# h2: ~# p& D9 C" K6 [# ~  D
3& \& G: e% `) g( K" t% l4 U
4" R0 n4 D  \4 m( w: b6 @
5
# N& a4 h0 y/ l# U3 f. s$ c2 {6
( U2 K' f. v& ?9 ]7
8 e; X: A: `8 R; Z1 d3 z80 k! i) Q! P" q* ?9 D9 H3 y
9
# j' ~* o) s/ J3 ?6 _  X10
- u5 K# n# |0 n8 I  F9 B& ?11
  _9 O4 N0 }0 R# `& P- L$ H12
( v4 J/ _# Q8 @# ]9 A13
8 Y& g; N" |8 w9 u9 `14
! J$ i8 l6 c- l9 w; _回到后台检查,OK,可以正常上传了。
& w" D& a* B8 p+ T: d- A; C% {% L如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查
& |% h$ M( ]0 b$ z3 n2 `) o: M
% ~+ M9 G+ t; U7 ?5. 列表页无法显示' n# \+ A; Z' F' h# _
控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。* v; Q* k0 k& Q5 _. P' O
0 q& }" z$ x* N2 Q% @: u1 R; P* d
原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382
$ r" p/ D; g( W# \5 U6 I. g6 L7 c+ E
回复

使用道具 举报

 楼主| 发表于 2023-10-11 20:28:52 | 显示全部楼层
Opencart体系是近几年逐渐兴起的电子商务网站平台。其安装便利、功能强大、操作简便,支持多国语言、货币和多店铺,因此备受跨境电商卖家推崇。然而,有时候商家可能会忘记管理员密码,尽管Opencart平台体系提供了默认找回密码功能,但有些情况下用户可能无法通过账户或邮件系统进行密码找回。那么在这种情况下,该如何修正Opencart体系的管理员密码呢?下面将简要介绍三种可行的方法。office-3295556_960_720.jpg
: n- o( j0 ?% f, [8 ]- M% d( M" ?2 r* ?+ |  _
方法一:通过调换域名修正管理员密码。2 d- T  j; O' u$ k9 b) D6 ?  a

* I  b  q! c& f$ P这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。
/ U9 `! s4 c9 k6 s7 _9 j) p% M8 y& W/ a9 d% ]- \) r
方法二:通过修正数据库来修改密码。
; p, i, a2 I1 h; u5 d2 T1 Q$ p  n% B: N9 U/ `! ^* z7 q0 p6 _; z7 \2 G
这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。
2 \; m) b0 Y6 y+ \( G
# B4 |  r& t  s( \( j# x方法三:直接应用特定网址修正密码。
4 T5 j$ g& Y1 D6 P! r' @0 R$ `' p
可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。7 j$ j0 \* K  g

& t  j( I8 q- e* ?, y以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。
+ H0 R5 Z, l* G; Z& j  y
3 B8 G2 N1 H* O# e: A; h总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。3 j" O# Z$ x8 l$ L6 T/ S

+ _) g# X/ s7 U+ Y" i(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。
5 }1 j. p$ P# z# n/ M. X& R' D& V如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。
9 T% V5 k& n1 }/ l/ E' b方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。( j' T2 y% D. }! V1 }8 u. |# L- i
( D3 u  E5 b2 B( @
PHP0 ~) {) Q  Q6 [& v
UPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1
9 I$ s+ e& r4 K& U) [) B或者新增一个超级管理员账号如下SQL,然后再修改密码:
( z7 x' J! N0 `0 m) b9 ]$ V. `
: t* X3 N( x5 z9 U% r账号amdin004 y5 B  `' Z3 z' ^& N3 T& ^
6 c0 E5 t8 q4 }7 C
密码admin
+ L. x0 p' ]+ s3 ]" w6 M/ Y; e- B0 z. R0 v, `( {8 F
PHP
* Q! \5 @& G1 F: ^& |INSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES
3 T7 n# N: s2 c  c4 v  r9 F(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');
% }4 m* {7 W6 ]( B* E方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。) ]( E( }; j. i4 b

& A2 s+ o( q- D2 t' Y" Y这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。7 o! E, _/ B# y" Q4 i
. T1 L3 N% f) y0 }
J`~}2_3CPV5UBB0ZGXU4PMQ.png1 A2 \: \* q- W. A' m3 z

6 P7 n) Z/ f( o+ p% k+ P6 W( k
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 13:59 , Processed in 0.182737 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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