闲话不多说,TP5(5.0.20) 在配置多入口文件的时候你是否遇到过一下的问题呢?

开发设计的需求吧网站拆分为前台、后台、API 3 个模块,对应的也需要3个入口文件,后台和API入口文件是用PATH_INFO 模式访问(关闭路由)。

在配置后台入口文件的时候,直接从前台入口文件拷贝了主要代码如下

<?php
// [ 后台应用入口文件 ]
// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
//定义自定义的配置目录
define('CONF_PATH', __DIR__ . '/../config/'); //开启调试
define('APP_DEBUG', true);
//关闭opcache缓存模块
ini_set('opcache.revalidate_freq',); //绑定admin模块
define('BIND_MODULE','admin/Index'); // 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php'; //关闭admin模块下的路由,必须写在框架引导文件之后
\think\App::route(false);

测试一下是否成功,(づ ̄3 ̄)づ╭❤~biubiu! 报错...

我的个×,什么鬼,我绑定了admin 模块了啊,报个index模块不存在,什么意思,牛头不对马嘴啊

经过逐步的排查分析,发现是config 配置文件中配置中开启了路由,但是 admin 入口文件中关闭路由方式不对(查看了官方文档和搜了下其他人所说的,完全没用)。

在5.0系列的入口文件中 加载框架引导文件只有一句代码:

require __DIR__ . '/../thinkphp/start.php';

问题就出在这  !!!!

要想关闭路由需要把上面的加载代码改为

require __DIR__ . '/../thinkphp/base.php';// 加载框架基础文件

// 需要执行的操作
\think\App::route(false);//关闭路由,必须写在基础框架之后,用于执行之前 \think\App::run()->send();// 执行应用

这样才能使自定义的配置文件生效。

还发现个问题是在入口文件中定义的一些设置其实根本没生效,如define('APP_DEBUG', true');这个不论改成大小写还是放在入口文件中任意位置,试过之后根本不起作用,必须在配置文件中去设置才能生效。

入口文件中可动态配置常量,但实际有些是不会生效的,需要测试后才能知道(不要一味的照搬)

如果想要模块有不同的设置的话,在 应用目录=》模块目录=》config.php 中进行设置,会覆盖最上层的应用设置的;也可以在自定义的 配置目录config =》模块目录(如admin)=》config.php 中设置。

扩展配置在extra文件夹下,文件名就是配置名称,配置的选项是该扩展配置的二级配置。每个模块都可以设置独立的扩展配置。

如在在自动公共配置目录的extra目录下新建一个myconfig.php文件,写入配置项

<?php
return [
//是否允许用户注册 [off|on]
'user_enable_register' => 'on',
//是否允许用户登录 [off|on]
'user_enable_login' => 'on',
//前台访问key值
'index_key' => 'indexkey',
//后台访问key值
'admin_key' => 'dminkey',
//api文档key值
'api_key' => 'apikey',
];

生成的二级配置如下

'myconfig' =>
'user_enable_register' => string 'on'
'user_enable_login' => string 'on'
'index_key' => string 'indexkey'
'admin_key' => string 'adminkey'
'api_key' => string 'apikey'

配置优先级,优先级高的设置相同配置会覆盖优先级低的,自定义配置目录下的要优先于应用目录下的配置文件

即:

  • config/模块/extra/配置文件   优先级高于 application/模块/extra/配置文件
  • config/模块/config.php 优先级高于 application/模块/config.php
  • config/config.php 优先级高于 application/config.php  

提示:在实际开发中,入口文件设置和配置文件设置要多注意测试,有些问题,需要用不同的方式去测试后才知道是否正确。

TP5 多入口文件配置的坑的更多相关文章

  1. flutter 入口文件配置路由+加载页面

    入口文件配置路由 1.路由信息 -- 加载页面 ,通常用于显示新的内容或者广告,加载完成之后进入主页面 -- 主页面 /app 2.配置页面  main.dart main.dart // main ...

  2. webpack4 单入口文件配置 多入口文件配置 以及常用的配置

    单入口文件配置 webpack.config.js const path = require('path'); const HtmlWebpackPlugin = require('html-webp ...

  3. tp5更改入口文件到根目录的方法分享

    tp5把入口文件放到了public目录中,对于服务器或者vps来说没啥,因为可以指定目录,但是对于虚拟主机就不行了,我们必须吧index.php这入口文件放到根目录,那么我么需要改一下相对的引入文件的 ...

  4. nginx下TP5 隐藏入口文件+支持pathinfo模式+配置多项目根目录

    首先说下项目目录情况  跟目录/usr/share/nginx/html/(别说怎么这么深  0.0) html文件夹下面两个目录 pssh  pssh_shop 两个tp5项目分别对应两个二级域名 ...

  5. Ubuntu下TP5隐藏入口文件

    部分内容是复制其他网友的博文,由于过了一段时间,找不到原文地址,再次表示感谢.以下是自己整理的,目的只是以后方便查阅 1.ubuntu或linux下找不到apache服务器配置文件httpd.conf ...

  6. Think_php入口文件配置

    think_php的入口模式有两种方式 1,一个入口文件对应一个项目应用 2,一个入口文件对应所有项目应用 默认情况,入口文件只需要require thinkphp文件夹就可以.比如thinkphp文 ...

  7. Ubuntu Server 14.04 & Apache2.4 虚拟主机、模块重写、隐藏入口文件配置

    环境: Ubuntu Server 14.04 , Apache2.4 一.Apache2.4 虚拟主机配置 01. 新建一份配置文件 在apache2.4中,虚拟主机的目录是通过/etc/apach ...

  8. tp5.1入口文件隐藏

    修改.htaccess文件 <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On Re ...

  9. tp5隐藏入口文件(基于nginx)

    location / {             try_files $uri $uri/ /index.php?$query_string; #这项配置解决访问根目录以外路径报404的错误      ...

随机推荐

  1. parewise算法性能优化

    在<接口自动化测试框架-AIM>这篇博客中,提到了parewise算法. 这次对其进行性能优化,共3点. 一. 因为笛卡尔积和两两拆分,是有序的. 就保证了两两拆分后的每列都是相同位置的元 ...

  2. 电梯调度 结对项目开发(郭林林&胡潇丹)

    (一)需求分析: 上升,下降,开门,关门: 超过负载以后发出警报,下去乘客: 电梯出现故障后,电梯停止: 电梯楼层的输入框可以同时指定所要到的楼层,也是楼层的显示框: 电梯同时记录多个状态,即为到达多 ...

  3. eclipse检出SVN代码的详细流程

    1.添加SVN资源库位置(未安装SVN,请先安装SVN) 2.因为该项目不是maven项目 所以还需要加入jar包(将项目lib里面的jar都Buile Path) 3.我这个项目需要修改编码格式 右 ...

  4. ubuntu HackRF One相关环境搭建

    本文内容.开发板及配件仅限用于学校或科研院所开展科研实验! 淘宝店铺名称:开源SDR实验室 HackRF链接:https://item.taobao.com/item.htm?spm=a1z10.1- ...

  5. DNS分离解析IPV6与IPV4用户

    IPV6改造中经常会遇到,网站使用了CDN,但是CDN厂商还不支持IPV6的情况,而AAAA.A.CNAME记录互相冲突,想实现IPV6用户得到AAAA记录,IPV4用户得到CNAME记录的需求. 解 ...

  6. [转载]GB2312简体中文编码表

    编码表源地址:http://www.knowsky.com/resource/gb2312tbl.htm编码在线查询:http://www.qqxiuzi.cn/bianma/zifuji.phpGB ...

  7. Python20-Day05

    一.模块与包 1.模块 什么是模块? 在python中,模块可以分为四个通用类别: 1. 使用python编写的.py文件 2. 已经被编译为共享库或DLL的c或者c++扩展 3. 把一系列模块组织到 ...

  8. javascript常用方法和技巧

    浏览器变编辑器 data:text/html, <style type=;right:;bottom:;left:;}</style><div id="e" ...

  9. java(系统)实战1

    在简单学习了java的布局和一些界面的绘制方法后,我便开始有了跟着视频和书本的知识学做一个简单的餐饮系统,才能激发自己的编程和不断巩固知识. 我简单说明一下本次做的系统很普通但具有实用性,是通过jav ...

  10. win10系统下载-靠谱推荐

    win10系统下载的靠谱推荐: 1.http://www.xitongtiandi.net/wenzhang/win10/12926.html 2.https://msdn.itellyou.cn/ ...