今天搭建LNMP安装OpenCart,从域名购买到网站能访问,用了一个白天的时间,期间也遇到许多坑,在这儿备忘一下。
一、文件权限的问题
根据官方的安装说明,要将下面的文件、文件夹的权限设为0755,我的LNMP设置好之后,除了两个config.php文件,其他文件夹都是0755权限,将这两个文件的权限改为0755之后,终于可以见到安装界面了,可是到了第二步出现了“http error 500 网页无法正常运作”的错误。
我开始以为是VPS的速度问题,因为我买的是所在地为美国的VPS,国内访问非常慢。后来在网上搜索了一下,发现出现“http error 500 网页无法正常运作”的错误,是文件权限的原因,于是将下面这些文件的权限改为0777,终于解决了这一问题。
chmod 0755 or 0777 system/storage/cache/
chmod 0755 or 0777 system/storage/download/
chmod 0755 or 0777 system/storage/logs/
chmod 0755 or 0777 system/storage/modification/
chmod 0755 or 0777 system/storage/session/
chmod 0755 or 0777 system/storage/upload/
chmod 0755 or 0777 system/storage/vendor/
chmod 0755 or 0777 image/
chmod 0755 or 0777 image/cache/
chmod 0755 or 0777 image/catalog/
chmod 0755 or 0777 config.php
chmod 0755 or 0777 admin/config.phpIf 0755 does not work try 0777.
在安装OpenCart时也会发现,如果只是0755的话,安装时会提示这些目录不可写。
二、
安装Opencart成功之后,进入后台,出现这个错误提示。
Warning: realpath(): open_basedir restriction in effect. File(/home/wwwroot) is not within the allowed path(s): (/home/wwwroot/www.xxx.com/:/tmp/:/proc/) in /home/wwwroot/www.xxx.com/admin/controller/common/security.php on line 26
我首先查看php.ini文件的配置,发现里面的“open_basedir=”没有作任何设定。
在
root@localhost:/usr/local/nginx/conf
目录下面执行以下命令:
grep -rn "open_basedir" ./
返回如下结果:
./fastcgi.conf:27:fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
可以看到这里作了限定。
三、安装Opencart成功之后,进入后台,出现这个窗口。
我选择了自动移动。结果后来网站无法访问了,访问首页出现如下错误:
Warning: fopen(/storage/logs/openbay.log): failed to open stream: No such file or directory in /home/wwwroot/www.xxx.com/system/library/log.php on line 22 Warning: fopen(/storage/logs/openbay.log): failed to open stream: No such file or directory in /home/wwwroot/www.xxx.com/system/library/log.php on line 22 Warning: fclose() expects parameter 1 to be resource, boolean given in /home/wwwroot/www.xxx.com/system/library/log.php on line 39 Warning: fopen(/storage/logs/error.log): failed to open stream: No such file or directory in /home/wwwroot/www.xxx.com/system/library/log.php on line 22
我用本地安装的config.php、admin/config.php文件替换服务器上的这两个文件,就又可以访问了。
然后通过:
解决方案:
1、通过 ps -ef |grep php 命令查看php的执行用户是哪一个。
2、给wwwroot目录增加对应的用户和组: chown -R www:www /home/wwwroot
3、给www用户组增加 rw权限: chmod -R g+rw /home/wwwroot
4、给logs目录添加权限:chmod -R g+rw /home/wwwroot/storage/logs
四、open_basedir
是什么?(What)
open_basedir将PHP所能打开的文件限制在指定的目录树中,包括文件本身
open_basedir 指定的限制实际上是前缀,不是目录名
怎么做?(How)
有以下几种方法配置open_basedir: