同步操作将从 黔狐科技/FoxCMS黔狐内容管理系统 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
<?php/** @Descripttion : QianFox让数字化营销更简单* @Author : QianFox Team* @Date : 2026年05月12日 00:18:36* @Version : V1.24* @Copyright : ©2021-现在 贵州黔狐科技股份有限公司 版权所有* @LastEditors : QianFox Team* @LastEditTime : 2026年05月12日 16:17:53*/// [ 后台独立入口文件 ]namespace think;if (version_compare(PHP_VERSION, '7.1', '<') || version_compare(PHP_VERSION, '8.0', '>=')) {$vinfo = require_once('./data/update/version/info.php');$pve = require_once('./static/warn/php_version_error.html');echo $pve;exit();}define('INSTALL_PATH', str_replace('\\', '/', dirname(__FILE__)));if (file_exists(INSTALL_PATH . "/install/") && !is_file(INSTALL_PATH . '/install/install.lock')) {header('Location:/install/index.php');exit();}$base = require('./config/cfg/base.php');$adminconfig = require('./config/adminconfig.php');try {require __DIR__ . '/vendor/autoload.php';} catch (\Throwable $e) {if ($base['frame_exception'] == '0') {$pve = require_once('./static/warn/php_version_error.html');echo $pve;exit();}}// 引入验证文件require_once __DIR__ . '/app/validate/BaseValidate.php';// 实例化 BaseValidate 类$validator = new \app\validate\BaseValidate();// 全局参数验证$validator->validateGetParams();$validator->validateCookieParams();$validator->validatePostData();// 全局Referer 头验证$_SERVER['HTTP_REFERER'] = $validator->validateReferer() ?? '';// 获取当前入口文件名,用于URL生成$currentScript = basename($_SERVER['SCRIPT_NAME'], '.php');$adminPath = $adminconfig['admin_path'] ?? $currentScript;$adminRoot = '/' . $adminPath . '.php';// 执行HTTP应用并响应 - 直接运行admin应用$http = (new App())->http;define("RUNTIME", __DIR__);// 配置URL生成,根据URI动态确定应用$applyInfo = getApplyInfo();// 手动创建并配置 Request 对象$refHttp = new \ReflectionClass($http);$propApp = $refHttp->getProperty('app');$propApp->setAccessible(true);$app = $propApp->getValue($http);$request = $app->make('request', [], true);// 使用反射设置 protected 属性 baseFile$ref = new \ReflectionClass($request);$prop = $ref->getProperty('baseFile');$prop->setAccessible(true);$prop->setValue($request, $adminRoot);$prop->setAccessible(false);if ($applyInfo['is_apply']) {// 如果是插件应用,指定正确的应用名$http->name($applyInfo['app_name']);// 手动设置 pathinfo,确保正确解析 URL// 注意:当应用名被设置后,pathinfo 不应该包含应用名部分// 因为多应用模式下应用名已经从 URL 中提取出来了$uri = $_SERVER["REQUEST_URI"];$uri = strtok($uri, '?');$scriptName = basename($_SERVER['SCRIPT_NAME'], '.php');$uriArr = explode("/", $uri);// 找到入口文件在uri中的位置$entryIndex = null;foreach ($uriArr as $key => $segment) {if ($segment === ($scriptName . '.php')) {$entryIndex = $key;break;}}// 从入口文件后提取完整路径,并移除应用名部分if ($entryIndex !== null) {$pathParts = array_slice($uriArr, $entryIndex + 1);// 第一部分是应用名,需要跳过if (count($pathParts) > 1) {$pathParts = array_slice($pathParts, 1);} else {$pathParts = [];}$pathinfo = implode('/', $pathParts);// 设置 pathinfo 属性(不包含应用名)$propPathinfo = $ref->getProperty('pathinfo');$propPathinfo->setAccessible(true);$propPathinfo->setValue($request, $pathinfo);$propPathinfo->setAccessible(false);// 同时设置 $_SERVER['PATH_INFO'] 以防框架从环境变量中获取$_SERVER['PATH_INFO'] = '/' . $pathinfo;}$response = $http->run($request);} else {// 非插件应用,运行admin$http->name('admin');$response = $http->run($request);}$response->send();$http->end($response);/*** 获取应用信息* @return array ['is_apply' => bool, 'app_name' => string]*/function getApplyInfo(){$uri = $_SERVER["REQUEST_URI"];// 去掉查询参数$uri = strtok($uri, '?');$adminconfig = require('./config/adminconfig.php');$applys = require('./config/cfg/apply.php');$uriArr = explode("/", $uri);$scriptName = basename($_SERVER['SCRIPT_NAME'], '.php');// 找到入口文件在uri中的位置$entryIndex = null;foreach ($uriArr as $key => $segment) {if ($segment === ($scriptName . '.php')) {$entryIndex = $key;break;}}// 从入口文件后获取应用名if ($entryIndex !== null && isset($uriArr[$entryIndex + 1])) {$app_name = $uriArr[$entryIndex + 1];} else {$app_name = $uriArr[1] ?? null;}if (!$app_name) {return ['is_apply' => false, 'app_name' => null];}// 检查是否是后台管理应用(使用admin_path配置)if ($adminconfig["admin_path"] == $app_name) {return ['is_apply' => false, 'app_name' => 'admin'];}// 检查是否是插件应用foreach ($applys as $apply) {if ($apply == $app_name) {return ['is_apply' => true, 'app_name' => $app_name];}}return ['is_apply' => false, 'app_name' => null];}/*** 判断应用(兼容旧代码)* @return bool*/function isApply(){return getApplyInfo()['is_apply'];}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。