TP5 多入口文件配置的坑

閒話很少說,TP5(5.0.20) 在配置多入口文件的時候你是否遇到過一下的問題呢?php

開發設計的需求吧網站拆分爲前臺、後臺、API 3 個模塊,對應的也須要3個入口文件,後臺和API入口文件是用PATH_INFO 模式訪問(關閉路由)。thinkphp

在配置後臺入口文件的時候,直接從前臺入口文件拷貝了主要代碼以下api

<?php
// [ 後臺應用入口文件 ]
// 定義應用目錄
define('APP_PATH', __DIR__ . '/../application/');
//定義自定義的配置目錄
define('CONF_PATH', __DIR__ . '/../config/');

//開啓調試
define('APP_DEBUG', true);
//關閉opcache緩存模塊
ini_set('opcache.revalidate_freq',0);

//綁定admin模塊
define('BIND_MODULE','admin/Index');

// 加載框架引導文件
require __DIR__ . '/../thinkphp/start.php';

//關閉admin模塊下的路由,必須寫在框架引導文件以後
\think\App::route(false);

測試一下是否成功,(づ ̄3 ̄)づ╭❤~biubiu! 報錯...緩存

個人個×,什麼鬼,我綁定了admin 模塊了啊,報個index模塊不存在,什麼意思,牛頭不對馬嘴啊app

通過逐步的排查分析,發現是config 配置文件中配置中開啓了路由,可是 admin 入口文件中關閉路由方式不對(查看了官方文檔和搜了下其餘人所說的,徹底沒用)。框架

在5.0系列的入口文件中 加載框架引導文件只有一句代碼:測試

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

問題就出在這  !!!!網站

要想關閉路由須要把上面的加載代碼改成ui

require __DIR__ . '/../thinkphp/base.php';// 加載框架基礎文件

// 須要執行的操做
\think\App::route(false);//關閉路由,必須寫在基礎框架以後,用於執行以前

\think\App::run()->send();// 執行應用

這樣才能使自定義的配置文件生效。spa

還發現個問題是在入口文件中定義的一些設置其實根本沒生效,如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  

 

 

 提示:在實際開發中,入口文件設置和配置文件設置要多注意測試,有些問題,須要用不一樣的方式去測試後才知道是否正確。

相關文章
相關標籤/搜索