当前位置:首页>Linux>程序启动时到底发生了什么?彻底搞懂 Linux 环境变量的底层溯源、核心获取机制与安全应用

程序启动时到底发生了什么?彻底搞懂 Linux 环境变量的底层溯源、核心获取机制与安全应用

  • 2026-08-20 11:33:39
程序启动时到底发生了什么?彻底搞懂 Linux 环境变量的底层溯源、核心获取机制与安全应用

文章目录

  • 概要&序論
  • 零、 概念补充:命令行参数
    • 0.1 重新认识 main 函数
      • 0.1.1main函数不是程序的开始
      • 0.1.2main函数也有参数
    • 0.2 命令行参数的切分与表结构
    • 0.3 命令行参数的应用演示
  • 一、 引入环境变量
    • 1.1基本概念
      • 1.1.1环境变量的概念
      • 1.1.2常见环境变量
      • 1.1.3怎么看环境变量
      • 1.1.4环境变量和本地变量的设置和导入
        • 1.1.4.1核心概念对比
        • 1.1.4.2变量的操作指令
    • 1.2 main 函数的第三个参数
    • 1.3 为什么执行自己的程序必须加 ./
  • 二、 环境变量的底层表结构与溯源
    • 2.1 环境变量表的组织形式
    • 2.2 环境变量的内存级和磁盘级修改
    • 2.3怎么在windows下修改环境变量
  • 三、 获取环境变量的三种核心代码手段
    • 3.1 方法一:通过 main 函数的第三个参数隐式获取
    • 3.2 方法二:通过系统调用 API getenv定向获取
    • 3.3 方法三:通过全局第三方指针environ显式获取
    • 3.4 方法四:子进程继承父进程获取环境变量
      • 3.4.1 核心原理
      • 3.4.2 示例代码
  • 四、其他环境变量
    • 4.1所有环境变量罗列
      • 4.1.1USER和LOGNAME的区别
      • 4.1.2历史命令与HISTSIZE
    • 4.2环境绑定与权限控制用法
      • 4.2.1核心逻辑与安全防范
        • 4.2.2.1示例代码
      • 4.2.3 基于自定义环境变量的控制逻辑
        • 4.2.3.1示例代码

概要&序論

Hello大家好,我是此方。本文将带大家由浅入深地拆解 Linux 系统级编程中的核心基石:环境变量。我们将从 main 函数隐藏的命令行参数切入,进而深度剖析环境变量的底层指针数组结构、三大核心获取手段 。好,我们开始。

零、 概念补充:命令行参数

0.1 重新认识 main 函数

0.1.1main函数不是程序的开始

  main函数不是开始,也许你的老师经常说“main函数是代码的开始。”但是这是对于程序员而言的。vim code.s我们打开汇编代码:   Linux上是这个start,Windows上是_crt_start,这个函数内部调用main函数的逻辑如下

_start{    int ret = 0;    int arg_count=0;    arg_count=3;    if(arg_count == 0)        ret = main();    else if(arg_count==2)        ret = main(argc, argv);    else        ret =main(argc, argv, env);}

  扫描我们写的main函数,通过词法分析和语法分析得到这个count值是多少 然后调用不同的main函数。

0.1.2main函数也有参数

  在初学 C/C++ 编程时,我们接触最多的 main 函数通常是不带任何参数的。然而在 Linux 系统级编程中,真正的 main 函数其实是可以携带参数的。最常见的声明方式如下:

intmain(int argc, char *argv[]);

  这两个参数在程序启动时由操作系统自动传递。其中,argc是一个整型变量,用来记录命令行参数的个数;而 argv则是一个指向字符指针数组的指针,用来存储具体的命令行参数字符串。有种写法要知道一下:

intmain(int argc, char *argv[], char *env[]){    (void)argc;//为什么这么写: 应用一下变量,取消告警,    //你设置了但是没有用可能会发出警告    (void)argv;    (void)env;}

0.2 命令行参数的切分与表结构

  当我们在终端键入一个诸如 ls -a -b -c 的命令并按下回车时,终端解释器 bash 会首先拿到这一串完整的输入字符串。随后,bash 会以空格作为分隔符,将这个长字符串打散成数个子字符串。   这些被切分好的字符串会被填入一张表中。以输入 ./code a b c 为例,系统内部构建的指针数组结构如图所示:

char *argv[]:+---+    +----------------+| 0 | -->| "./code"       |+---+    +----------------+| 1 | -->| "a"            |+---+    +----------------+| 2 | -->| "b"            |+---+    +----------------+| 3 | -->| "c"            |+---+    +----------------+| 4 | -->| NULL           |+---+    +----------------+

bash 在切分字符串并构建该数组时,会在数组的末尾强制追加一个 NULL 指针作为结束标记。此时,参数的总个数 argc 的值为 4。

通过这种设计,进程便能清晰地知道自己拥有这样一张命令行参数表。(这很重要,我们后面会总结)

0.3 命令行参数的应用演示

  为什么要大费周章地把命令行参数传给 main 函数呢?其根本目的在于实现同一个程序的不同子功能。在 Linux 中,我们经常使用的 ls -als -l 等,本质上都是通过解析命令行参数表来实现的。   以下是一段 C++ 的演示代码,展示了如何通过不同的选项让程序支持不同的子功能:

#include<iostream>#include<string>using namespace std;// 演示:如何遍历打印所有的命令行参数voidTest01(int _argc, char* _argv[]){    for (int i = 0; i < _argc; i++)    {        cout << _argv[i] << endl;    }}// 演示:不同的功能是怎么通过命令行参数选项实现的voidTest02(int _argc, char* _argv[]){    if (_argc != 2)    {        cout << "输入错误!请重新输入" << endl;    }    else    {        string cmd = _argv[1];        if (cmd == "a")            cout << "执行一号功能" << endl;        if (cmd == "b")            cout << "执行二号功能" << endl;        if (cmd == "c")            cout << "执行三号功能" << endl;    }}intmain(int argc, char *argv[]){    // Test01(argc, argv); // 取消注释可查看参数遍历结果    Test02(argc, argv);    return 0;}

  通过这段代码可以直观地发现,./code 自身作为 _argv[0] 也是一个命令行参数。通过接收并判断 _argv[1] 传入的选项(如 abc),程序就能够走向不同的分支,从而获得不同的子功能。

一、 引入环境变量

1.1基本概念

1.1.1环境变量的概念

  • 环境变量(environment variables)
     —— 一般是指在操作系统中用来指定操作系统运行环境的一些参数。名称=内容形式
  • 如:
     我们在编写 C/C++ 代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。
  • 环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性

1.1.2常见环境变量

  • PATH
     : 指定命令的搜索路径
  • HOME
     : 指定用户的主工作目录(即用户登陆到 Linux 系统中时,默认的目录)
  • SHELL
     : 当前 Shell,它的值通常是 /bin/bash

1.1.3怎么看环境变量

命令
作用
echo  i=0; while [ i; let i++; done012345678910[whb@bite-alicloud lesson15]i

1.1.4.2变量的操作指令

① 定义本地变量直接使用 变量名=值 即可定义本地变量。 等号两边绝对不能有空格。如果值包含空格,需用双引号包裹。

my_var="hello world"i=10

② export:导入为环境变量(全局变量) 使用 export 命令可以将一个本地变量提升为环境变量,或者在定义时直接声明为环境变量。

  • 先定义,后导出
     ,或者直接导出。
var1="ubuntu"export var1  #或者:export var2="centos"

③ unset:删除变量 使用 unset 命令可以清理不再需要的变量。无论是本地变量还是环境变量,都可以被删除。

---------------------------------------------------------------------------------

以下内容从CSDN自动抓取脚本过来出了点小bug,建议访问本人的CSDN原文,这里贴个连接:https://blog.csdn.net/Z2314246476/article/details/161169366

# 删除刚才定义的环境变量unset var2# 验证是否删除(输出为空)echo PATH 来查看它的内容(后面这种用法,我们先用着):[zbc@VM-0-9-opencloudos ~]PATH/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin  当我们在命令行输入一个指令时,命令行解释器 bash 就会顺着 PATH 中配置的路径,从左到右依次去对应的目录下遍历、搜寻同名的二进制文件。(对!查找工作也是bash完成的)因此可以找到。我们自己的程序所在的目录不在PATH里面,所以找不到。  为了解决这个问题,我们必须通过 ./ 显式地告诉系统:请直接在当前的绝对/相对路径下查找并运行该程序。这就是为什么运行我们自己的程序时,必须要加上 ./code 的根本原因。二、 环境变量的底层表结构与溯源  我们上面讲的那什么?环境变量表。你肯定还是一头雾水。我们来集中研究一下:2.1 环境变量表的组织形式  当我们通过终端登录 Linux 系统时,系统会为我们启动一个 bash 进程。如果同时有 10 个用户登录,系统内就会存在 10 个独立的 bash 进程,各自维护一套环境变量表。环境变量表以NULL结尾(这个特性可以用来做代码的判断条件)char *env[]:+---+    +------------------------------------+0 | -->| "XDG_SESSION_ID=14400"             |+---+    +------------------------------------+1 | -->| "HOSTNAME=bite-alicloud"           |+---+    +------------------------------------+2 | -->| "TERM=xterm"                       |+---+    +------------------------------------+3 | -->| "SHELL=/bin/bash"                  |+---+    +------------------------------------+| ...| -->| ...                                |+---+    +------------------------------------+| n | -->| "PATH=/usr/local/bin:/usr/bin:..." |+---+    +------------------------------------+|n+1| -->| NULL                               |+---+    +------------------------------------+2.2 环境变量的内存级和磁盘级修改想一想?我们能不能改环境变量? 比如,你可以在终端直接输入:[zbc@VM-0-9-opencloudos ~] ls-bash: ls: No such file or directory  完啦!哈哈!这个时候再去执行一些命令,你会发现很多命令都不能用了(这种修改是覆盖式修改,你把原来的环境变量改没了,还能执行的叫内建命令,我们后面会讲)有一种追加式修改的方法:[whb@bite-alicloud lesson15]PATH:/home/whb/code/code/merge_class/lesson15[whb@bite-alicloud lesson15]PATH/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/whb/.local/bin:/home/whb/bin:/home/whb/code/code/merge_class/lesson15[whb@bite-alicloud lesson15]{which_declare} ) | /usr/bin/which ... } (导出的 Bash 自定义 which 函数)_/usr/bin/env (上一个执行的命令或当前拉起进程的工具路径)OLDPWD/home/student/project (上一次所在的工作目录路径,系统借此实现 cd - 运行时的快捷回跳)4.1.1USER和LOGNAME的区别我用一种最省事的方式告诉你他们的区别:  USER是我当前用户是谁。LOGNAME是我登录的时候是谁。这两个一般都是一致的,但是有一种情况不一致:4.1.2历史命令与HISTSIZE  bash可以记录我们的历史命令,于是我们就可以调用如下方式找到我们的历史命令。ctrl + r! v上下键。historyhistory | wc -l 表示当前系统里保存的历史命令条数我来一个一个演示一下:4.2环境绑定与权限控制用法  在 Linux 环境编程中,我们可以通过获取进程的环境变量或用户身份标识,来实现特定用户的权限绑定。4.2.1核心逻辑与安全防范  编写此类程序时,仅依赖 getenv("USER") 是不够安全的。原因如下:环境变量可伪造:任何用户(尤其是 root)都可以在终端通过 export USER=your_username临时修改该变量,从而绕过简单的字符串检查。UID 的唯一性:在 Linux 系统中,用户的 UID(User ID)是硬性绑定的,root 用户的 UID 永远为 0。通过 getuid() 系统调用可以获取真实的当前用户 ID。  因此,最稳固的方案是双重验证:既要匹配 USER 环境变量,又要排除 root 的 UID(或者直接限定为你的专属 UID)。4.2.2.1示例代码  以下是完整的 C++ 示例代码。请将代码中的 "your_username" 替换为你自己的 Linux 用户名。#include<iostream>#include<cstdlib>// 包含 getenv#include<unistd.h>// 包含 getuid, geteuid#include<string>int main() {    // 1. 定义允许执行该程序的专属用户名    const std::string AUTHORIZED_USER = "your_username";    // 2. 获取当前环境变量中的 USER 值    const char* env_user = std::getenv("USER");    std::string current_user = env_user ? env_user : "";    // 3. 获取当前进程的实际用户 ID (UID)    uid_t current_uid = getuid();    // 4. 核心安全检查:    //    - 检查环境变量 USER 是否匹配    //    - 确保当前用户不是 root (root 的 UID 永远为 0)    if (current_user == AUTHORIZED_USER && current_uid != 0) {        // 正确的逻辑分支        std::cout << "[验证通过] 欢迎回来," << AUTHORIZED_USER << "!" << std::endl;        std::cout << "执行核心绝密逻辑... 正确答案是:42" << std::endl;    }     else {        // 其他人(包括 root)或环境变量被篡改时的分支        std::cout << "[错误] 权限不足:该程序已被锁定,仅限指定用户执行。" << std::endl;        // 故意输出误导性的错误信息或静默退出        return 1;    }    return 0;}4.2.3 基于自定义环境变量的控制逻辑  除了系统自带的环境变量外,我们还可以通过自定义环境变量来控制程序的行为(例如作为一种简单的软件激活凭证或 Debug 开关)。4.2.3.1示例代码  这就是利用进程级的数据传递;来控制子进程的一些控制逻辑#include<iostream>#include<cstdlib>// 包含 getenv#include<string>intmain(){    // 1. 获取自定义的 FLAG 环境变量    const char* env_flag = std::getenv("FLAG");    std::string flag_val = env_flag ? env_flag : "";    // 2. 控制逻辑:仅当 FLAG 显式设置为 "1" 时允许运行    if (flag_val == "1") {        std::cout << "[SUCCESS] FLAG 验证成功,程序开始正常运行!" << std::endl;        // 核心业务逻辑...    } else {        std::cout << "[ERROR] 缺失关键环境变量或参数不正确,程序终止。" << std::endl;        return 1;    }    return 0;}好的本期内容就到这里,如果对你有帮助,还不要忘记点赞三联支持。我是此方,我们下期再见。bye!

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 13:38:25 HTTP/2.0 GET : https://f.mffb.com.cn/a/510259.html
  2. 运行时间 : 0.251965s [ 吞吐率:3.97req/s ] 内存消耗:4,644.98kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=7726e18cbe4b658085dfde3576008249
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001166s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001949s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000791s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000791s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001549s ]
  6. SELECT * FROM `set` [ RunTime:0.000630s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001651s ]
  8. SELECT * FROM `article` WHERE `id` = 510259 LIMIT 1 [ RunTime:0.003565s ]
  9. UPDATE `article` SET `lasttime` = 1787290706 WHERE `id` = 510259 [ RunTime:0.057508s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000972s ]
  11. SELECT * FROM `article` WHERE `id` < 510259 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001453s ]
  12. SELECT * FROM `article` WHERE `id` > 510259 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001295s ]
  13. SELECT * FROM `article` WHERE `id` < 510259 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002270s ]
  14. SELECT * FROM `article` WHERE `id` < 510259 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.006624s ]
  15. SELECT * FROM `article` WHERE `id` < 510259 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004709s ]
0.255943s