tp3.2老旧项目的一些坑

搞了套小程序源码,后端是古老的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 # 重启所有容器,也可以单个启动
原文地址:https://www.cnblogs.com/YC-L/p/12384714.html