搞了套小程序源码,后端是古老的tp3.2,用laradock部署环境,遇到了好几个问题哦~
一,在.env种配置项目地址和镜像内对应的地址
vim .env
APP_CODE_PATH_HOST= 配置linux本机中的项目地址
APP_CODE_PATH_CONTAINER= 将本机中的项目地址自动映射到镜像中的/var/www 目录
二,tp3.2中的 path_info 与 nginx 相应的配置
首先找到nginx的配置文件,找到对应的站点文件,我用的是laradock,文件在laradock/nginx/sites目录下
重定向,在 loacation / { } 里面添加一句话,实现重定向
if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; break; }
然后解析并添加PATH_INFO全局变量,这是为了给tp3.2获取PATH_INFO作的准备工作
在 location ~ .php { } 中添加三行
fastcgi_split_path_info ^(.+.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
注意默认的配置是 location ~ .php$,这里 $ 的意思是以 ...为结尾,为了能够匹配到带后面字符串的url,去掉$
最后修改tp3.2的url的模式为2
这样我们输入 http://wechat.test/Admin/Login/index.html (不带index.php)就能访问相应的方法或者页面了
三、_STORAGE_WRITE_ERROR_问题
遇到这种问题,一般是写入权限问题,修改Runtime文件夹权限为777
chmod 777 -R Runtime
Runtime文件夹在 主目录/App 下
四、如何在laradock的数据库中导入sql
首先把sql文件放到指定文件夹里面
指定文件夹 laradock/mariadb/docker-entrypoint-initdb.d
然后进入容器内部,我用的是mariadb,执行命令
docker-compose up exec mariadb bash
然后登录mysql,密码自己知道
mysql -uroot -p
最后执行导入命令
source docker-entrypoint-initdb.d /***.sql
五、一些常见操作
站点文件中配置域名,也要在hosts中绑定
vim /etc/hosts #举个例子 0.0.0.0 wechat.test
docker-compose命令
docker-compose up -d 某容器名字 #-d是后台启动 docker-compose up --build 某容器名字 #--build是重新创建某容器,类似编译 docker-compose down #停止所有容器,也可以单个停止 docker-compose restart # 重启所有容器,也可以单个启动