微擎inc.php 读不到,解读微擎之----bootstrap.inc.php
加载各种静态资源,定义大量$_W下变量的值,判断是否安装微擎,设置phpini的值,$_W[]判断http发送的方式
';
//strpos("$atr","a")查找 "a" 在字符串$atr中第一次出现的位置
echo "·如果你还没安装本程序,请运行install.php 进入安装>>
";
echo " Power by WE7 " . IMS_VERSION . " 微擎公众平台自助开源引擎";
exit();
} else {
header('Content-Type: text/html; charset=utf-8');
exit('配置文件不存在或是不可读,请检查“data/config”文件或是重新安装!');
}
}
require $configfile;
require IA_ROOT . '/framework/version.inc.php';//定义了三个常量
require IA_ROOT . '/framework/const.inc.php';//大量常量的定义
require IA_ROOT . '/framework/class/loader.class.php';//load()机制加载文件
load()->func('global');
load()->func('compat');
load()->func('pdo');
load()->classs('account');
load()->classs('agent');
load()->model('cache');
load()->model('account');
load()->model('setting');
define('CLIENT_IP', getip());
$_W['config'] = $config;
$_W['config']['db']['tablepre'] = !empty($_W['config']['db']['master']['tablepre']) ? $_W['config']['db']['master']['tablepre'] : $_W['config']['db']['tablepre'];
$_W['timestamp'] = TIMESTAMP;//定义当前时间戳常量
$_W['charset'] = $_W['config']['setting']['charset'];
$_W['clientip'] = CLIENT_IP;
//$config在$configfile加载的config.php中定义的数组
unset($configfile, $config);//销毁常量$configfile, $config
//IA_ROOT本页第十行返回当前目录
define('ATTACHMENT_ROOT', IA_ROOT .'/attachment/');
define('DEVELOPMENT', $_W['config']['setting']['development'] == 1);
if(DEVELOPMENT) {
//PHP ini_set用来设置php.ini的值,在函数执行的时候生效,脚本结束后,设置失效。无需打开php.ini文件,就能修改配置,
ini_set('display_errors', '1');
//规定不同的错误级别报告: // 报告 E_NOTICE 之外的所有错误
error_reporting(E_ALL ^ E_NOTICE);
} else {
error_reporting(0);// 关闭错误报告
}
//in_array("Mark", $people)检测$people中会否存在Mark返回布尔值
if(!in_array($_W['config']['setting']['cache'], array('mysql', 'memcache', 'redis'))) {
$_W['config']['setting']['cache'] = 'mysql';
}
load()->func('cache');
//function_exists();检测函数是否已经定义返回布尔值
if(function_exists('date_default_timezone_set')) {
date_default_timezone_set($_W['config']['setting']['timezone']);
}
if(!empty($_W['config']['setting']['memory_limit']) && function_exists('ini_get') && function_exists('ini_set')) {
//ini_get是获取php.ini里的环境变量的值。
if(@ini_get('memory_limit') != $_W['config']['setting']['memory_limit']) {
@ini_set('memory_limit', $_W['config']['setting']['memory_limit']);
}
}
if (isset($_W['config']['setting']['https'])) {
$_W['ishttps'] = $_W['config']['setting']['https'];
} else {
//和$_SERVER有关的解释参考http://blog.csdn.net/jinxingfeng_cn/article/details/24960981
$_W['ishttps'] = $_SERVER['SERVER_PORT'] == 443 ||
//strtolower()把所有字符转换为小写
(isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) != 'off') ||
strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https' ||
strtolower($_SERVER['HTTP_X_CLIENT_SCHEME']) == 'https' ? true : false;
}
//判断请求是否为ajax请求
$_W['isajax'] = isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
$_W['ispost'] = $_SERVER['REQUEST_METHOD'] == 'POST';
$_W['sitescheme'] = $_W['ishttps'] ? 'https://' : 'http://';
//htmlspecialchars($str)转化$str为输出为html
$_W['script_name'] = htmlspecialchars(scriptname());
//substr($str,6,5) 函数返回字符串第六个字符开始的五个字符
$sitepath = substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/'));
$_W['siteroot'] = htmlspecialchars($_W['sitescheme'] . $_SERVER['HTTP_HOST'] . $sitepath);
if(substr($_W['siteroot'], -1) != '/') {
$_W['siteroot'] .= '/';
}
//parse_url($url);解析url返回数组
$urls = parse_url($_W['siteroot']);
$urls['path'] = str_replace(array('/web', '/app', '/payment/wechat', '/payment/alipay', '/api'), '', $urls['path']);
$_W['siteroot'] = $urls['scheme'].'://'.$urls['host'].((!empty($urls['port']) && $urls['port']!='80') ? ':'.$urls['port'] : '').$urls['path'];
$_W['siteurl'] = $urls['scheme'].'://'.$urls['host'].((!empty($urls['port']) && $urls['port']!='80') ? ':'.$urls['port'] : '') . $_W['script_name'] . (empty($_SERVER['QUERY_STRING'])?'':'?') . $_SERVER['QUERY_STRING'];
//MAGIC_QUOTES_GPC本页13行
if(MAGIC_QUOTES_GPC) {
//istripslashes()删除反斜杠
$_GET = istripslashes($_GET);
$_POST = istripslashes($_POST);
$_COOKIE = istripslashes($_COOKIE);
}
$cplen = strlen($_W['config']['cookie']['pre']);
foreach($_COOKIE as $key => $value) {
if(substr($key, 0, $cplen) == $_W['config']['cookie']['pre']) {
$_GPC[substr($key, $cplen)] = $value;
}
}
unset($cplen, $key, $value);
//array_merge合并数组
$_GPC = array_merge($_GET, $_POST, $_GPC);
$_GPC = ihtmlspecialchars($_GPC);//没有查到ihtmlspecialchars
if(!$_W['isajax']) {
//file_get_contents() 函数把整个文件读入一个字符串中。
$input = file_get_contents("php://input");
if (!empty($input)) {
$__input = @json_decode($input, true);
if (!empty($__input)) {
$_GPC['__input'] = $__input;
$_W['isajax'] = true;
}
}
unset($input, $__input);//销毁变量
}
setting_load();//见model/seting.mod.php 31行
if (empty($_W['setting']['upload'])) {
$_W['setting']['upload'] = array_merge($_W['config']['upload']);
}
$_W['attachurl'] = $_W['attachurl_local'] = $_W['siteroot'] . $_W['config']['upload']['attachdir'] . '/';
if (!empty($_W['setting']['remote']['type'])) {
//ATTACH_FTP见framework/version.inc.php47行
if ($_W['setting']['remote']['type'] == ATTACH_FTP) {
$_W['attachurl'] = $_W['attachurl_remote'] = $_W['setting']['remote']['ftp']['url'] . '/';
} elseif ($_W['setting']['remote']['type'] == ATTACH_OSS) {
$_W['attachurl'] = $_W['attachurl_remote'] = $_W['setting']['remote']['alioss']['url'].'/';
} elseif ($_W['setting']['remote']['type'] == ATTACH_QINIU) {
$_W['attachurl'] = $_W['attachurl_remote'] = $_W['setting']['remote']['qiniu']['url'].'/';
} elseif ($_W['setting']['remote']['type'] == ATTACH_COS) {
$_W['attachurl'] = $_W['attachurl_remote'] = $_W['setting']['remote']['cos']['url'].'/';
}
}
$_W['os'] = Agent::deviceType();//framework/agent.class.php36行
if($_W['os'] == Agent::DEVICE_MOBILE) {
$_W['os'] = 'mobile';
} elseif($_W['os'] == Agent::DEVICE_DESKTOP) {
$_W['os'] = 'windows';
} else {
$_W['os'] = 'unknown';
}
$_W['container'] = Agent::browserType();
if(Agent::isMicroMessage() == Agent::MICRO_MESSAGE_YES) {
$_W['container'] = 'wechat';
} elseif ($_W['container'] == Agent::BROWSER_TYPE_ANDROID) {
$_W['container'] = 'android';
} elseif ($_W['container'] == Agent::BROWSER_TYPE_IPAD) {
$_W['container'] = 'ipad';
} elseif ($_W['container'] == Agent::BROWSER_TYPE_IPHONE) {
$_W['container'] = 'iphone';
} elseif ($_W['container'] == Agent::BROWSER_TYPE_IPOD) {
$_W['container'] = 'ipod';
} else {
$_W['container'] = 'unknown';
}
$controller = $_GPC['c'];
$action = $_GPC['a'];
$do = $_GPC['do'];
header('Content-Type: text/html; charset=' . $_W['charset']);
微擎inc.php 读不到,解读微擎之----bootstrap.inc.php相关推荐
- 结合Kubernetes解读微服务的12要素
结合Kubernetes解读微服务的12要素 https://cloud.tencent.com/developer/article/1428843
- 深入解读微服务架构下分布式事务解决方案
微服务倡导将复杂的单体应用拆分为若干个功能简单.松耦合的服务,这样可以降低开发难度.增强扩展性.便于敏捷开发.概念一经提出迅速火遍全球.当前 Hailo 有160个不同服务构成,NetFlix 有大约 ...
- 今日新闻简报 每日一份微语简报 60s读懂世界
今日新闻简报 每日一份微语简报 60s读懂世界 [365资讯简报]每天一分钟,知晓天下事!2020年12月27日 星期日 农历十一月十三 1.今日新闻简报头条:冒名顶替上大学.高空抛物.抢夺公交方向盘 ...
- 初学者选黑卡还是微单_零基础,一篇读懂单反和微单
许多小白在选购相机时,常常会纠结选微单还是选单反. 那么这次就来一篇通俗讲解:单反和微单有什么区别?谁更好?应该怎么选择? 一.单反和微单有什么区别? 在了解单反和微单的区别之前,我们先要了解它俩到底 ...
- 微服务 松耦合_超值干货:微服务架构下如何解耦,对于已经紧耦合下如何重构?...
今天准备谈下微服务架构下各个微服务间如何解耦,以及对于已经紧耦合的微服务如何进行重构.要明白实际上微服务后续出现的诸多问题往往都是一开始微服务模块划分就不合理导致,对于具体的模块划分方法和原则,我总结 ...
- 微表情如何用计算机分析计算,面部微表情识别若干关键技术之计算机研究
面部微表情识别若干关键技术之计算机研究 论文价格:免费 论文用途:其他 编辑:vicky 点击次数:188 论文字数:31584 论文编号:sb2019053109223726543 日期:2019- ...
- 微服务(概念篇)| 什么是微服务?
本章目录 前言 一.微服务介绍 1.什么是微服务 微服务由来 为什么需要微服务? 3.1 早期的单体架构带来的问题 3.2 微服务与单体架构区别 3.3 微服务与SOA区别 微服务本质 什么样的项目适 ...
- 一篇文章带你快速理解微服务架构,由浅入深带你走进微服务架构的核心
戳蓝字"CSDN云计算"关注我们哦! 文章来自:Java和Android架构 什么是微服务 首先微服务并没有一个官方的定义,想要直接描述微服务比较困难,我们可以通过对比传统WEB应 ...
- 《深入理解 Spring Cloud 与微服务构建》第十五章 微服务监控 Spring Boot Admin
<深入理解 Spring Cloud 与微服务构建>第十五章 微服务监控 Spring Boot Admin 文章目录 <深入理解 Spring Cloud 与微服务构建>第十 ...
最新文章
- 再发力!Facebook AI何恺明等最新研究MoCo(动量对比学习)第二版,超越Hinton的SimCLR,刷新SOTA准确率...
- 数据挖掘导论读书笔记4--其他分类技术
- php三位不够前面加0,php 格式化数字 位数不足前面加0补足的实现方法
- Chrome 调试技巧 1
- Google+ 团队的 Android UI 测试
- 单位阶跃函数的傅里叶变换_傅里叶变换学习笔记(9)
- python基本语法结构
- Centos7镜像官网下载
- zer0pts CTF 2022 VishwaCTF 2022
- java代码计算两个时间相差的天数:
- composer 安装php 扩展,composer 服务器安装扩展失败怎么办
- 从平头哥讲起,谈谈全域旅游,说说为什么要做全栈工程师
- mysql minus_10.24程序员节,喜得一套「MySQL性能优化金字塔法则」
- 什么是域名到期?域名到期抢注要怎么进行?
- H5网站-微信浏览器中打开底部fixed遮住内容区域问题
- 电机功率和转矩、转速之间的关系
- C语言中void*详解及应用
- 【托业】【跨栏】TEST05
- 女大学生深度揭露大学最露骨生活,值得我们深思!
- linux 后台运行程序命令