今天在迁移公司商城的时候,按照OpenCart一般的迁移步骤,导入数据库和程序文件,设置好Nginx解析,一切都很顺利,最后打开网站出现了两个问题:" z3 I% T$ w- x. I" Q) }& U
+ @. ?) x# K0 ^出现报错YOU NEED THE PHP "DOMDocument" EXTENSION INSTALLED(原因是系统没有安装php-xml扩展)
0 M4 M2 m) a8 k+ S- ^1 t商品图片无法显示(样式正常)(原因是config文件中的路径没有使用绝对路径), D; C$ z2 t: K
后台登录不跳转(原因是session存储目录没有写入权限)( r' ^7 e3 \7 k8 b4 {3 J. v4 {2 A
后台无法上传图片(原因是图片目录没有读写权限)
2 Q- w) g- m/ L列表页无法显示(原因是渲染路径拼写错误)0 p3 c2 R9 K6 A3 v
注:服务器环境——CentOS 6.9 + Nginx 1.10 + MariaDB 10.3 + PHP 5.63 Q7 h$ A8 B6 i8 [
7 Y# ~1 v% n. N9 E( |, a
解决办法
k% s* w/ T) p& a- ]5 ~1. 缺少php-xml扩展
0 ^0 h U1 \( f r: E根据PHP版本安装相应的扩展,我的是PHP 5.6,所以应该安装php56w-xml扩展:
( A" v! V5 e2 `& m. W1 k4 e W! @( W" ^) h5 a
yum install -y php56w-xml$ X! Q9 ^. |& V8 a5 d5 R
19 G X0 m) ?- [& p: {. t0 i
安装完成后记得要重启php-fpm进程:
# W4 o6 ]9 ?7 o% c' X' [% X, Y) X0 f' `2 j* Y% s
service php-fpm restart& S$ D8 e9 O* n
1
& C0 J$ Z0 r1 K: f重新打开页面,可以正常打开页面了,但是出现了第2个问题,商品图片无法显示。
2 A& W# r/ v7 o
* c8 I" W0 ^( K2 ?8 m+ Y2. 商品图片无法显示
: M1 Q! Z+ P1 N, d( s, s" @用Chrome工具看了一下,商品列表中的图片src显示为unknown,直觉是路径有问题,但是PHP脚本路径问题,还是图片路径问题,还无法确定,需要继续排查:' X5 Y3 V& `* L) A/ v; a2 K
3 U/ N% U5 [$ @6 G1 T8 x8 }4 R查看数据库中product表中图片的路径,一切正常,没有乱码,说明可以排除这个问题;) L0 ?3 y, x( |" R9 }# W7 y
查看config.php文件中的路径配置,发现路径中使用了软链接/www/而没有使用绝对路径,这种用法很容易导致程序运行出错
. {5 U% Y0 D$ w所以果断更换了该路径为/home/www/,重新上传到网站根目录和admin下的两个config.php文件,两个均需要修改。; y: S0 q, s6 T L5 B& p
再次打开网页,图片已经可以正常显示。5 M' t; ^; Z( g; F3 @) }& V
" H% t( Z* M; E$ U4 |3. 后台登录不跳转! w1 `0 E8 h0 ?* B" @/ R
后台登录无法跳转,首先需要从Nginx错误日志寻找线索,日志级别设为warn,不要使用debug级别,日志记录太过详细导致几百行日志记录看不到问题所在。
# A2 z: N: {4 V9 n a& k, a/ S& l1 M l5 j
SessionHandler::read(): open(/var/lib/php/session/sess_****************, O_RDWR) failed: Permission denied (13)
% D5 l; _$ S2 d* _4 `1
2 r5 \: F1 `# y1 e! e7 X! D找到问题所在,解决就简单了,转到/var/lib/php/session目录,设置session目录权限为755即可
1 q8 P1 o6 J \2 I- [& V i' i% h. {, R9 W9 X$ Z2 F
# chmod 755 session/
, _. f4 z- k$ p7 U4 Y1$ p) e3 `# m1 X3 M
至此迁移的问题基本全部解决,记录下来备查,希望能帮到碰到类似问题的同行。
5 [9 O7 ^# u: r3 y1 T3 n8 @! N9 c6 A; f5 e8 e( @5 c" Q. q
4. 后台无法上传图片
5 D# Z2 i% m0 l! T' }; b检查Nginx日志发现的问题是:
! {+ V: F7 w; e7 j+ a# m4 V; s0 u: P4 H1 q/ e/ T2 B" B
[error] open() "/www/www.domain.com/tm/searchTrademarkList.do" failed (2: No such file or directory)
6 X6 z9 ?2 |: e4 ^1
! Z- O2 A+ W9 P此问题和前面的第2个问题一样是因为/www/路径为软链接路径,是在Nginx解析配置www.domain.com.conf中使用了该路径,改成/www/的绝对路径/home/www/即可。
( G/ M: }$ \ v' Y, d* }8 Z9 f% q7 K0 w5 a( H' C( `
解决路径问题,只是其一,上传时仍然会提示如下错误:/ m5 }, m9 w8 ?1 I$ W8 a" H
! F+ d& s% U* }' h; @It was not possible to complete the request due to file system permission restrictions.0 @9 `. L N0 |0 F3 r9 n1 f5 ^
17 B+ k/ P% ?2 ^6 Q1 i, O- c
这是CKEditor编辑器的报错,这种报错多半是上传路径的权限不足导致的:5 l2 O3 c# u0 i2 b
, l- H# E" @5 J# {6 N
// 到网站根目录为image及其子目录catalog提权到777& ]& n; g1 S5 _! h
//(注:此处也有可能是用户、组的问题导致的,比如上传时使用的是root权限,执行时是其他用户,那就需要修改用户、组)
, j& {& J. ?3 Z: A+ {chmod 777 image;6 [1 o! a& s+ j
chmod 777 image/catalog
# F. z$ { l+ S1 X! o
; p2 |! U, V4 h' q// 如果 catalog下存在子目录还需要将子目录一并提权
8 V- r" K/ c. H2 q6 |+ ^// 列出子目录
! _5 z% ^* v% o& {9 }cd /image/catalog && ls -F | grep '/$'
0 u; x7 r; Z( lchmod 777 1/ 10/ 2/ 22/
4 a( N! n# @( R' E3 c) M# _5 o e5 j+ F2 v% I$ p! u6 K" @
// 同时需要将子目录的缩略图目录提权(如果不提权会导致虽然上传成功,但是仍然无法选择使用已上传的图片)
1 L) \3 |( Q" l7 M- J( acd /image/cache/catalog && ls -F | grep '/$'! n$ ?9 s2 z1 \7 }
chmod 777 1/ 10/ 2/ 22/ " ?& B, D. L: w' Y" u' ], t
, h" t& ~" c1 c& }6 y4 ~' u1
/ t# h9 q2 V( _+ L1 y2, u' ~1 H- D! [* X s K p
3, I- m7 g$ Y& [
4
& W; t! C0 y6 S5
! s2 Z8 B" o" A' R: g6
0 b$ d. t5 U3 R5 ^ ?77 L/ v0 r1 Z! e I9 `3 l: k
8: l4 c v( s9 Q0 p. [" U7 o# o& m
9
; D- P8 S$ G+ k8 q) b8 |% c10
* g8 C0 }8 ]( l: s11
$ T z& q- e, e, |1 y12! x, f" E& i: a7 I. o
13
0 p2 b" z9 u# M14' e6 S! ?, g' b! {4 W' \! w8 e, _# u
回到后台检查,OK,可以正常上传了。
5 k: a C' x' H0 W- r* m7 ?如果上述办法仍然不能解决问题,请参考CKEditor官网提供的问题排查方法检查:CKEditor问题排查
q/ P; H6 r4 p( G0 ~* Z0 c9 R
$ B( g: t8 U! o# o) x5. 列表页无法显示
% N: K. {0 w4 k* y( t控制器下的/catalog/controller/product/categorylist.php在渲染输出时误将product/Categorylist中的Categorylist首字母大写,这个错误在Windows Server 2008上正常运行,但是迁移到CentOS上后却无法渲染了,页面显示空白,调试之后发现只是一个字母的问题。
4 w7 U* P( s# }; ]. o1 H2 \
: ?" h! I, Q/ w. j2 f原文链接:https://blog.csdn.net/gaoshanliushui131/article/details/90720382- f; k0 O% z6 V2 X
( r, h9 Y6 ^" P1 l1 _7 B" w |