在ubuntu16.04上配置ecshop系统的惨痛经历

前言

ecshop是一套网上购物系统,类似于淘宝,非商业版开源免费,可以供学习使用,在这里我们用它当作压力测试的目标。

但就我个人体验来说,并不太好,我也不太清楚是不是因为我安装的ecshop不是最新版的缘故(我安装的是imooc上提供的链接 如下),各种错误。

pan.baidu.com/s/1dDAJvZN

现在先写一些这两天我安装时遇到的一些问题吧。

准备Linux(我选的是ubuntu16.04)

服务器可以有两种选择,1:虚拟机,2:腾讯云啊阿里云啊随便租一个

ssh 远程登录什么的我就不多说了,假设大家不会卡在这里。

首先我们配置一个web服务器,包括apache2、php5.6、mysql。

注意,这里的php不能是7.0,否则安装ecshop到最后一步你会发现,这个东西不支持在php7.0下访问mysql。这个我也试图解决,有人贴出了一个githup上ecshop的补丁,但我点进去时已经404了。也有博客园的dalao特别野,自己生生把那些接口都改了。。表示一波尊敬。。

下边进行各种包的安装。

sudo apt install apache2 git vim mysql-server mysql-client

sudo apt-get install -y language-pack-en-base
sudo LC_ALL=en_US.UTF-8add-apt-repository ppa:ondrej/php
sudo apt-add-repositoryppa:ondrej/php
sudo apt upgrade

sudo aptinstall php5.6-common php5.6-gd php5.6-mysql 
sudo apt install libapache2-mod-php5.6

(中间那一大堆是apt的换源操作,我本人事成功了的,如果有什么地方不行,也可自行百度ubuntu16.04安装php5)

这样基本的安装就结束了,详细的配置待会再说。

详细配置(默认会vim的使用)

  • 现在需要你把ecshop.zip这个文件传到服务器,在mac上直接用scp命令就行了
    scp /Download/Ecshop.zip ubuntu@你服务器的地址

  • 然后在服务端解压
    uzip Ecshop.zip

  • 将其中的upload文件改名放到~下。(你的文件夹可能不是这个名字,类似操作就好)
    mv Ecshop/upload ~/ecshop

  • 然后进到apache2的配置文件的所在地:cd /etc/apache2中
    sudo vim apache2.conf

  • 大概在150行左右,在标签中,all denied 改成all granted,防止外部无法访问到。(:wp)

  • 然后接着在这个目录下(/etc/apache2)
    sudo vim sites-enabled/000-default.conf

  • 我们可以修改监听的端口,但我没有改。主要需要改的是DocumentRoot这个属性,我们需要把这个地方改成之前cshop的地址(注意最后不要加/)
    DocumentRoot /home/ubuntu/ecshop

  • 然后启动服务
    service apache2 restart

  • 访问网站,我们可以看到大概的雏形了

漫长的改bug之旅

1) 上来就是错。

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP;
ECS has a deprecated constructor in ~/cshop/includes/cls_ecshop.php on line 25



这也是一个版本的问题。。把同名的构造函数改成__constructor就OK了。

class foo{
    foo(){   
    }
}

class foo{
    __construct(){
    }
}

2) 点击下一步,到达检查环境,报错。方法不是静态的。

Deprecated: Non-static method cls_image::gd_version() should not be called statically in ~/csshop/install/includes/lib_installer.php on line 31
//操作:
vim ~/ecshop/includes/cls_image.php
//把gd::_version()这个函数前加个static就行了,改成这样:
//static function gd::_version()

3) 我们发现很多不支持,首先看看mysql,支持,那么就省了很大一部分事。gd是php的一个库,大概是显示图片的。如果你之前按照我的命令执行的话,那么应该是装上了php5.6-gd,如果这里显示不支持,那就是因为php.ini文件中没有打开的缘故了。首先我们需要找到php.ini这个配置文件:

  1. 在~/ecshop下新建一个xx.php文件,里边这么写:
    phpinfo();
    ?>
  2. 去访问你这个文件,用apache2解释它,你会看到如下图的信息,从里边找到地址。
    在ubuntu16.04上配置ecshop系统的惨痛经历_第1张图片
    然后我们去修改php.ini这个文件,找到下边这一行,去掉行首的分号
    extension=php_gd2.all
    重启apache2
    service apache2 restart

  3. 此时你应该看到支持gif、png等,但是jpeg还是不支持,但其实锅在ecshop的代码,我们到这里改代码:
    vim install/includes/lib_installer.php
    其中在100行左右的这句话,他把 gd_info[‘JPEG Support’] $ 写成 gd_info[‘JPG Support’],刷新,解决问题。

4) 很多文件的权限不支持的问题,赋予权限就行了。
sudo chmod -R 777 ~/ecshop
注意是R,不是r。这里有点想要吐槽的,因为我的基本功还有些欠缺吧,我在百度解决这个问题的时候,看到有人说是r,我也没仔细想就去试了,但是老是报错。。(哭)

5)到这里第二步就差不多了,目前应该就不报错了,点击下一步,配置。然后瞬间又报错了。大概如这样:
在ubuntu16.04上配置ecshop系统的惨痛经历_第2张图片
然后一样的去改第300行,把上边这行改成下边这样。

//return preg_replace("/{([^\}\{\n]*)}/e", "\$this->select('\\1');", $source);
return preg_replace_callback("/{([^\}\{\n]*)}/",function($r){ return $this->select($r[1]);},$source);



然后是422这行的错。这里说的是不能用函数的返回值来当作变量使用。
改成这样就好:
$tttt = explode(' ',$tag);
$tag_sel = array_shift($tttt);

6)应该没啥大问题了吧。。哭

效果:
在ubuntu16.04上配置ecshop系统的惨痛经历_第3张图片

你可能感兴趣的:(平时,软件测试)