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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2353|回复: 2

OpenCart迁移

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

  e5 x$ H- i' o( v' J4 B出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)' f( D# v% W4 [+ J) T1 Y& B
商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径)  E- X5 C2 }1 R% W, t8 h
后台登录不跳转(原因是session存储目录没有写入权限)* Z& _1 [0 e! K
后台无法上传图片(原因是图片目录没有读写权限)8 O& b# F: U8 A) K8 Y3 K  Z# O
列表页无法显示(原因是渲染路径拼写错误)
' z7 r/ Y$ w7 q! F1 I6 j/ @注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.6
1 B# i; I1 N0 }4 j7 L& W+ n2 a+ {
2 U$ W+ ?2 A$ ]. a& z解决办法. X5 d/ _" M/ V' w7 o# I
1. 缺少php-xml扩展( n- k* s1 }2 B, C7 M* L- R
根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:
/ M+ K9 s. ]* J0 W% j
( p% E% t" d& L) p/ i$ hyum install -y php56w-xml" ^. g" x. H! L7 F
1
- W0 C9 i) N3 G4 \# u) M, t安装完成后记得要重启php-fpm进程:
9 w5 d6 A/ Y" c! l7 l5 B- T; K9 W1 f* j% H! i3 L
service php-fpm restart! Q+ p5 i* P6 x
1
6 [8 Q; j0 p( V3 T7 q) j重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。
& m% t0 [, g! _7 V+ o8 h8 I
2 t- n& l+ C6 i8 P% P( }2. 商品图片无法显示8 C8 `0 w; U! L- ~8 h( h7 d
用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:0 h/ o! G% n; M* h! C
7 x) h7 |2 N0 p! _# s
查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;# t5 e7 n+ q  L' M
查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错# X& c5 [, O) ]$ F: R
所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。5 Y. C  _$ [6 O+ u3 y' V9 p
再次打开网页,图片已经可以正常显示。4 S% U5 m4 f: K6 v8 C* e
/ a# q) \# S" P" s) e9 m  y
3. 后台登录不跳转6 F3 h. z. \3 N  I: X+ q
后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。" U$ ^' b8 V, }9 u: B

: G5 I- x7 t3 b3 a8 Y9 cSessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13). C% R* I# e$ w1 v: {
1
5 l0 ^% j$ t% `. u5 I找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可# L: c. l9 W  i0 T- w0 Z  i
; W3 v1 T) Z4 v; V$ x! e% K3 Y  g: v% `
# chmod 755 session/0 U/ @1 `0 Q) p! k5 M( f1 g  d3 h, a
1, p5 `( N+ D8 y6 i* R0 W
至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。- h5 d7 F) a5 V& R& K- V
5 D: S: W: `' O  B
4. 后台无法上传图片4 L" h" i8 Y1 I' @0 z$ M! M
检查Nginx日志发现的问题是:
# n' c2 w' R1 K5 w0 n
+ a# h( c- P' U  D[error]  open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)* d0 ~; M+ }1 H" E
1. I4 a" ~5 d. |# }1 B9 ?& g3 r5 ?
此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。, a: _9 }9 b- r4 j
* s& R( ~" z( ^" l. h8 G9 p: }6 N
解决路径问题,只是其一,上传时仍然会提示如下错误:
3 l" N7 \6 m8 j; q
9 Z) K6 n) t0 [, ]9 e9 `It was not possible to complete the request due to file system permission restrictions.+ C; t) E  j& Z
1+ x8 [0 c. P- V; Q4 f4 K
这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:
; Z, _3 n( W7 v
8 v" U( [7 l6 S, U// 到网站根目录为image及其子目录catalog提权到777
% t1 [# ~3 G' m$ h* d//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)
2 Z; q& t& h; S/ O4 Lchmod 777 image;
$ `5 F5 ?: I1 }' K8 Tchmod 777 image/catalog. y% |" K, S' D( ~* W8 b8 y% x

5 p3 u" H' [$ k3 i// 如果 catalog下存在子目录还需要将子目录一并提权3 c8 R+ i' x, \" W+ T* \) ?3 r
// 列出子目录
: g! i: M1 O6 k7 k$ N2 [cd  /image/catalog && ls -F | grep '/$'( _4 [4 T- K  z! P) c8 N
chmod 777 1/  10/  2/ 22/  8 A, l8 E* ~* ?, f8 C" O2 t$ y* F

; n" [; v1 k% h// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)% L" c3 D+ N+ X2 ?8 V
cd /image/cache/catalog && ls -F | grep '/$'0 `( S5 u/ t; v# M+ o6 x
chmod 777 1/  10/  2/ 22/  & G+ g# @* K' s$ b3 u
: d/ a4 z; }  ~& K) d& E8 r
1
, @! l& {, {3 [3 H! o0 E2
" B7 i5 e( i# A9 z: V( S* \* n3
+ {/ D, N. K( A7 d! {) X4" d' I9 E3 R6 z! P1 i, [% v
5
0 ~! j$ C7 i. ~! O7 y1 A5 `4 g% y6
# B! {/ Y% k. O% T7
9 G2 c5 [# b; @: O6 n- K8# P& `  t5 G4 S' B
9" h$ X9 p% G- k
10
) R9 g: R0 S* k) L# H( C  W& N11
/ |3 B: `2 {8 `: j1 a12) h7 R$ l: _8 \% T
13; u' }. Z- J. p2 j3 }, ~: `
14" g4 H% r$ k/ [
回到后台检查,OK,可以正常上传了。
3 r+ m1 P9 M. t4 |9 N如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查# [2 A/ e" \5 w+ K+ D4 C" L

+ d5 |7 W5 O' z7 u1 h5. 列表页无法显示1 F+ X/ o/ d7 F
控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。0 P3 T" s! s% w" I4 c% B& O& z

0 m8 P, p% K" k- G7 \原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382& G0 W( n, ~4 j, `& k) i

+ w. h+ }) O1 \# J8 p$ M
回复

使用道具 举报

 楼主| 发表于 2023-10-11 20:28:52 | 显示全部楼层
Opencart体系是近几年逐渐兴起的电子商务网站平台。其安装便利、功能强大、操作简便,支持多国语言、货币和多店铺,因此备受跨境电商卖家推崇。然而,有时候商家可能会忘记管理员密码,尽管Opencart平台体系提供了默认找回密码功能,但有些情况下用户可能无法通过账户或邮件系统进行密码找回。那么在这种情况下,该如何修正Opencart体系的管理员密码呢?下面将简要介绍三种可行的方法。office-3295556_960_720.jpg
: K# b! S9 q. i2 P8 l" K  n
0 a7 |, X  {+ h6 N4 `9 M& n% b方法一:通过调换域名修正管理员密码。7 g# \% d7 T; B
7 M( [5 ^. V( y: H* n: m
这种方法需要满足三个条件:一是所有操作必须在同一台电脑上进行;二是修正密码必须在同一个数据账户下进行;三是修正时所操作的Opencart版本原形相同或接近。如果商家能登录Opencart A 的后台账户密码,但忘记了Opencart B 的账户密码,那么可以通过登录前者来修正后者的密码。! `5 H3 ?. w) ~1 e, m4 E7 y

4 J0 S: u+ H- ?方法二:通过修正数据库来修改密码。) |) x" N: [  H! E) ~. o

) R2 H" ]7 h: V. ~( ?' Y这种方法也有两个前提:首先修正前后的Opencart版本必须相同,其次需要一个可用作参考的网站。通过其他数据库衔接工具,登录已知密码的Opencart数据库,查看用户数据表,复制管理员账户的password和salt字段,然后将其复制并替换到忘记密码的网站数据库对应的位置。
5 \" G5 t" z2 d" I% t2 ~
) d# Y) P* I3 V3 w+ E  ~方法三:直接应用特定网址修正密码。
  B2 r: ]8 u) i
! g% s& [  [6 z可以直接使用特定网址“/admin/index.php?route=user/user/edit”来修正管理员密码。通过进入该网址,按照要求进行操作即可完成密码修正。/ u" u. ^' ?5 x' @, \& F# [# R

- F& n/ U9 E  c! {以上就是Opencart体系修正管理员密码的三种方法。不过对于Opencart用户而言,更重要的是妥善保管好自己的用户密码,以免遇到忘记密码的尴尬局面。因此,在设置密码时要选择安全可靠的组合,同时最好将密码妥善保存在安全的地方,以确保账户的安全。
4 p7 w. _: V( U& s- m& ?
' E% U0 J+ f% j6 \4 n8 I3 W总的来说,Opencart作为一款强大的电子商务网站平台,提供了多样化的功能和便捷的操作,同时为用户提供了多种修正管理员密码的方法。希望本文介绍的方法能帮助到有需要的商家,让他们在运营Opencart平台时更加得心应手。同时,建议商家在使用任何修正密码的方法前,务必确保自己的身份和权限,以保障数据的安全性。7 _5 F7 \: I( c: e( Z; C; v

% a; T! P0 W. S9 v/ F7 d(本文内容根据网络资料整理,出于传递更多信息之目的,不代表连连国际赞同其观点和立场。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-11 21:41:16 | 显示全部楼层
大家可能都会遇到安装opencart程序之后,忘记了后台登录密码,虽然opencart可以找回密码,但是如果你的网站还没有开启邮箱设置,那么就没有办法找回密码了。
( c0 N( q2 ~# `+ r; n如果你可以修改数据库或者修改文件夹,那么这里有两个办法交给大家如何能快速的解决这个问题。
% q* Z$ Y2 g) a, U) @方法①:打开数据库执行下面的SQL,这个SQL将admin账号的密码修改成了admin,然后再等了后台操作来再次修改密码。/ M3 f- U# }* L7 b
0 k, }0 @4 v+ r' O) U
PHP0 ~* o0 f% s/ e' b
UPDATE `oc_user` SET `password`='189833422741e25009f13a3860923e78a0e69132' ,`salt`='oUxbOHdUr' WHERE `user_id`=1/ w* l8 ?. ]! a- O
或者新增一个超级管理员账号如下SQL,然后再修改密码:9 u  M9 ?+ y4 h6 {0 _; e, h1 P
9 l$ i- @$ E" W
账号amdin00
* Q3 G3 o( @) C  i8 X- x4 ?1 R" t" H$ w4 s9 ~
密码admin
$ x# Y8 J8 |# w, Z3 P0 ?( K. H
PHP
2 T& d$ m! X6 N* PINSERT INTO `oc_user` (`user_group_id`, `username`, `password`, `salt`, `firstname`, `lastname`, `email`, `image`, `code`, `ip`, `status`, `date_added`) VALUES, P4 G- ^2 f2 m5 o
(1, 'admin00', '189833422741e25009f13a3860923e78a0e69132', 'oUxbOHdUr', 'John', 'Doe', 'test@qq.com', '', '', '127.0.0.1', 1, '2019-12-24 10:39:33');
; _, u! C5 `- c) J方法②:修改文件:找到system\library\cart\user.php 这个文件,先将其备份,然后打开这个文件 找到public function login 这个方法,然后暂时去掉AND这个红框的中的代码并保存。' c% ^6 }+ i% i; ~, B* `
3 V% b+ x0 s; S  H
这样我们登陆我们登陆时可以不需要输入密码,只输入账号即可登陆后台,登陆之后切记要将这个代码还原。4 C7 y. M& X& M( B

) }2 h# `) B6 |( h+ dJ`~}2_3CPV5UBB0ZGXU4PMQ.png- E  M- n5 \* h

6 o" p8 b# T; Z2 G" }1 x6 L
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-20 00:18 , Processed in 0.095377 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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