Home >  > http error 500 网页无法正常运作(OpenCart备忘)

http error 500 网页无法正常运作(OpenCart备忘)

0

今天搭建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.php

If 0755 does not work try 0777.

在安装OpenCart时也会发现,如果只是0755的话,安装时会提示这些目录不可写。

Snap87

二、

安装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成功之后,进入后台,出现这个窗口。

Snap92

我选择了自动移动。结果后来网站无法访问了,访问首页出现如下错误:

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:

  • 在 php.ini 中设置 open_basedir = /home/wwwroot/ ;
  • 在程序中使用 ini_set('open_basedir','/home/wwwroot')配置;
  • 在Apache 的 httpd.conf 配置文件中的Directory 中设置php_admin_value open_basedir "/home/wwwroot/";
  • 在 Apache 中的 vhost.conf 配置文件中设置,可单独为某个虚拟主机设置;
  • 在 Nginx 的 fastcgi.conf 中设置fastcgi_param PHP_VALUE "open_basedir=$document_root:/tmp/";;
  • 在 网站根目录的 .user.ini 中设置 ,不需要重启服务器或php-fpm(此文件需要使用 chattr +i 添加隐藏属性禁止文件被删除或改动);
  • 暧昧帖

    本文暂无标签

    发表评论

    *

    *