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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2399|回复: 2

OpenCart迁移

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

' `- S. P8 J* N; c5 Q出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)
8 d- p. z* ^8 X- C商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)6 I& f3 S0 Y) \. x
后台登录不跳转(原因是session存储目录没有写入权限)/ i) j* u+ r; X- k/ u" y& S- I
后台无法上传图片(原因是图片目录没有读写权限)9 g: t  r! J+ K8 R2 y7 w0 Z3 F6 g
列表页无法显示(原因是渲染路径拼写错误)
2 N/ N  O7 S7 J7 d$ z  M: b8 M注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6, {2 Q! A' _% C0 }1 |) H+ P( t
) t2 A" e7 f( E- s
解决办法
# V# a' e! G: P7 p- Y1. 缺少php-xml扩展* B: ?% d% o% {2 i2 I' |
根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:
1 p. a9 ]7 Q# k
# k7 L: _8 [4 i; eyum install -y php56w-xml
9 `4 Z& x3 y8 y& }' @/ }1
" Q8 }) A: n: h( G' H% I3 b  E; y( @/ E安装完成后记得要重启php-fpm进程:9 m; ]8 m2 y/ k

8 H7 T5 C+ v, a% oservice php-fpm restart; i& z8 W- r, O; r/ |/ Q
1' V% Y0 q! l. r6 h' E/ ~* D4 t
重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。- \" A% U" |0 v3 I

  F/ U* c1 _8 f  g2. 商品图片无法显示
0 B" f* P, q# J6 f1 a$ d用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:
+ J+ }3 `& |9 Y; x/ u& ^5 C3 F( Q  P; I& z
查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;
: p& C# L: P6 V7 H- P, ]  c# @查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错, K0 v$ \9 ~+ \3 @2 q
所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。
& l  R1 ^; _5 D再次打开网页,图片已经可以正常显示。- R7 H. H& ~& W. p) `4 Q
0 r1 W* C& c5 `% E2 Z+ S( E% O
3. 后台登录不跳转
! f; Y/ B0 P+ a5 J8 q3 w4 T后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。0 c# s5 G3 k/ \* K
0 W0 g# l3 e; T. M" I- Y
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)
( h2 o$ J6 a9 i1 N# [( g- ?16 s. P+ q& E8 @; H
找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可0 P# ]: W. n8 k2 ~
3 d# U5 S, Z- a( Q! b" h6 K) C/ N% Z
# chmod 755 session/7 V, S& B4 m9 H4 |: @
1% y0 h1 T: K1 y
至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。
& Z# r5 B. H0 E- |( V0 A9 E: s- m2 R
4. 后台无法上传图片
# }* Q6 ~1 h8 b* T检查Nginx日志发现的问题是:
; ^8 |- h/ `0 B7 v: F; o4 ~9 {$ g$ t$ A- H9 C! c  f
[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)0 O' e( {+ n" }+ ?, N
12 e& z% U% s/ B+ F
此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。7 `& W* w% h% [) A. M
4 e7 d, S) A. X' I1 n" ~
解决路径问题,只是其一,上传时仍然会提示如下错误:
: L. `# l  c& W2 M4 r3 P& Z3 U0 L8 {8 G4 B% G5 ]
It was not possible to complete the request due to file system permission restrictions.( ?/ y1 K% X5 K3 n
1
) U  o$ |( ~8 D4 j2 K$ k. U这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:
' i2 p$ C' i! u8 H' W
8 Z" _4 q$ J& T8 O5 K// 到网站根目录为image及其子目录catalog提权到7776 h. w- ]  Q. Z" ^8 Y) O
//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)
5 t" O$ _4 O, W7 r: h% t* r; {chmod 777 image;
/ M& U3 ~6 U" K: d4 A. [7 h. ichmod 777 image/catalog0 f" i9 B6 l( M8 k& I
0 |/ c4 V8 I' ~
// 如果 catalog下存在子目录还需要将子目录一并提权
& _. ?( k" i5 {# v, }// 列出子目录
9 t% }1 Q+ J% @1 K, R, a' x. _cd  /image/catalog && ls -F | grep '/$'8 a  d- y- _1 X- v; `
chmod 777 1/  10/  2/ 22/  3 F/ h) P2 J; y  d' ?

6 ]5 d/ n; _; \8 f" M0 [// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)
* l/ H$ O0 H5 Y; Y, vcd /image/cache/catalog && ls -F | grep '/$'
( Q6 @. X# [! U6 _! u; e9 C9 F  [( Jchmod 777 1/  10/  2/ 22/  
5 @: W" [4 N$ U" B
& Z  Q8 s6 ]# a$ c: Y1
3 T% D% A0 C7 N# Q0 x2 G2  P# L7 n$ j# c) Z' _/ I
3
1 B( L# X, s+ [& o& L4 H4! y+ g' D: W5 G% Z+ }5 X
5
, d- F5 {$ D) ], G0 {6
: l) ?) N$ f( v! ?71 F; w5 l/ N. k
8, E( z  ]7 u( U) x
9
& M3 g/ A! D  V6 T10
8 q2 Z, L0 H" `- i8 m11: M9 {& l: K2 a3 A+ D0 H
12
$ {8 z# P  f- ?' L" g4 W& v, s13
8 p8 R. R( i: t/ K  l% T147 z) I# S* @8 x3 e
回到后台检查,OK,可以正常上传了。
2 n7 T2 O6 o6 c- g; ?' v1 q如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查5 k  |$ V+ @# r0 `$ ^5 f
! W+ r: d. d* f/ k* s- o
5. 列表页无法显示1 m# z! z8 ^) \0 W# W4 |4 i
控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。" ]& r8 H4 [  _! n4 R
* g6 v/ y% v7 U# ~- p, \
原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382
! E0 f! K+ t6 q$ z) ?; l1 m0 Y" `
回复

使用道具 举报

 楼主| 发表于 2023-10-11 20:28:52 | 显示全部楼层
Opencart体系是近几年逐渐兴起的电子商务网站平台。其安装便利、功能强大、操作简便,支持多国语言、货币和多店铺,因此备受跨境电商卖家推崇。然而,有时候商家可能会忘记管理员密码,尽管Opencart平台体系提供了默认找回密码功能,但有些情况下用户可能无法通过账户或邮件系统进行密码找回。那么在这种情况下,该如何修正Opencart体系的管理员密码呢?下面将简要介绍三种可行的方法。office-3295556_960_720.jpg' t' H/ n) P& k/ @
3 n  U! j; h* O6 K3 q( S% |
方法一:通过调换域名修正管理员密码。8 ^! e) G' g( l  r* V4 m6 G/ C

( _! c1 E$ @- @0 k6 Y这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。/ D' e" A9 B* B, w2 {0 |
0 L$ w, c& h0 |- B
方法二:通过修正数据库来修改密码。
/ `, M4 g2 s0 y+ Y4 F2 o4 D2 j2 g" c" @  K6 A4 t2 ^
这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。
& p1 |  R& Y  N7 W
1 a7 V2 ~! e3 Y5 z& ^& m( X! k+ q方法三:直接应用特定网址修正密码。
  }# L( a9 [/ ]. Z% A5 Y
8 v- ^0 s2 g$ f+ J" {2 f2 W2 p可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。/ b; G' O/ A5 d" S: _2 g. \9 T  b$ n

" d( y, `/ S2 `" ?  u以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。3 \7 ^4 s. @; o, V% [5 p

% w; N% S* r! O2 z$ g总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。* p7 _, M& y$ r* f

7 _; _% ]" l% _$ `# e+ ]! y4 ~(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。
! }4 E  f- V) K5 W. w* h如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。9 A1 r( `# x& i6 t7 |
方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。; v0 R+ Y* \  d/ L6 d, F
* ^& N) F- o8 j  V1 p6 q1 i* S/ c' O
PHP
& K7 Z0 s; z9 ]UPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1) ~4 N! c$ _3 R' V& d
或者新增一个超级管理员账号如下SQL,然后再修改密码:  ^4 e: y% Y- K/ q
% ~' R3 W9 T2 v4 V6 H/ x
账号amdin00$ u6 Z* ~9 }% ?" p& U" f
; V7 k8 B) q" J* b
密码admin
  R/ O: y, o3 ^9 W6 O& ~
$ j& m6 K; D0 @" PPHP
, R4 g- T& I9 t! v- f: E# OINSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES0 X% l# i) }- U( Q" ]( U
(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');" V7 C/ d5 R( ]) V+ u2 c7 J9 c+ j
方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。
  g( w3 y) z! O2 W7 |6 ]0 c' A/ B$ Z9 O. w
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。0 E7 o( d" H% C. i: E

) Z, j8 R! {$ O  D7 ?9 q& |J`~}2_3CPV5UBB0ZGXU4PMQ.png+ X% W3 a0 v+ y4 h# @

6 p0 G; J8 _2 d- |3 o7 P& n' a
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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