ecshop是一套网上购物系统,类似于淘宝,非商业版开源免费,可以供学习使用,在这里我们用它当作压力测试的目标。
但就我个人体验来说,并不太好,我也不太清楚是不是因为我安装的ecshop不是最新版的缘故(我安装的是imooc上提供的链接 如下),各种错误。
pan.baidu.com/s/1dDAJvZN
现在先写一些这两天我安装时遇到的一些问题吧。
服务器可以有两种选择,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)
这样基本的安装就结束了,详细的配置待会再说。
现在需要你把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
访问网站,我们可以看到大概的雏形了
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这个配置文件:
phpinfo();
?>
去访问你这个文件,用apache2解释它,你会看到如下图的信息,从里边找到地址。
然后我们去修改php.ini这个文件,找到下边这一行,去掉行首的分号
extension=php_gd2.all
重启apache2
service apache2 restart
此时你应该看到支持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)到这里第二步就差不多了,目前应该就不报错了,点击下一步,配置。然后瞬间又报错了。大概如这样:
然后一样的去改第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)应该没啥大问题了吧。。哭