当前位置:首页>Linux>不懂binfmt_misc,别再说你懂Linux程序执行机制了

不懂binfmt_misc,别再说你懂Linux程序执行机制了

  • 2026-07-01 09:50:54
不懂binfmt_misc,别再说你懂Linux程序执行机制了

在Linux上用Wine跑Windows程序、用Docker构建跨架构镜像、直接执行Java的jar包,你是否想过这些操作行云流水背后的逻辑?

很多朋友对着Linux内核源码啃了很久,却始终摸不透execve系统调用的完整执行链路,不懂内核如何支持非原生格式的程序运行。其实你忽略了一个Linux内核中极为核心却极易被忽视的机制——binfmt_misc。binfmt_misc让Linux系统拥有了极强的包容性和扩展性。不懂binfmt_misc,你看到的Linux程序执行只是“表面现象”,无法理解内核扩展执行能力的核心设计;不懂binfmt_misc,你遇到的跨架构、容器执行问题只能是“无头苍蝇式排查”,抓不住问题的本质。

Part1什么是binfmt_misc?

binfmt_misc的全称是Binary Format Miscellaneous,翻译过来就是“杂项二进制格式”,是Linux内核提供的一套可动态扩展的二进制格式注册与执行机制。它允许用户态向内核注册自定义的二进制格式处理规则,让内核能像执行原生ELF程序一样,无缝执行任意格式的可执行文件。

要理解它的核心价值,我们先回顾Linux原生的程序执行能力。在没有binfmt_misc的情况下,Linux内核原生只支持两种可执行格式:

  1. ELF格式:Linux系统标准的二进制可执行文件,是内核原生支持的核心格式;

  2. Shebang脚本:以#!开头的文本脚本,比如#!/bin/bash#!/usr/bin/python3,内核会根据开头的解释器路径加载执行。

这两种格式覆盖了绝大多数基础场景,但内核把格式支持写死在了代码里,要新增一种格式,必须修改内核源码、编译模块、甚至重启系统。比如想直接执行Windows的.exe文件、ARM架构的跨架构二进制、Java的.jar包,原生内核根本无法处理。

而binfmt_misc它的核心思路极其简洁:在内核的程序执行框架里,新增一个通用的“自定义格式匹配层”,不把格式规则写死,而是让用户态动态注册、随时修改,无需改动内核代码,更不用重启系统。

举个通俗的例子:Linux内核的程序执行系统就像一个快递驿站,原生只认ELF和Shebang这两种标准快递面单,其他格式的“包裹”(exe、jar、跨架构二进制)驿站直接拒收。而binfmt_misc就是给驿站新增了一套“自定义面单规则”,你可以告诉驿站:“凡是面单上有XX特征的包裹,统一交给XX快递员(解释器/模拟器)处理”。规则注册完成后,驿站就能无缝处理任意格式的包裹,用户完全无感知。

Part2binfmt_misc架构与原理

Linux内核把所有二进制格式的执行逻辑,都抽象成了统一的struct linux_binfmt结构体,每种格式只需要实现对应的接口,就能注册到内核的执行链中,无需改动核心执行逻辑。

binfmt_misc并没有为每一种新格式单独实现一套执行逻辑,而是在内核层面实现了一个通用的格式匹配与转发层:它只负责匹配文件的特征(魔数、扩展名),匹配成功后,把文件转发给用户态注册的解释器执行。这种设计把“格式识别”和“格式处理”完全解耦,内核只做自己擅长的执行调度,具体的格式解析交给用户态的解释器,灵活性和扩展性拉满。

2.1 核心组成

  1. 内核执行域核心框架:以struct linux_binfmt为核心的程序执行体系,是binfmt_misc的底层支撑,所有二进制格式的执行都必须通过这个框架接入内核。

  2. binfmt_misc内核模块:实现了通用的二进制格式匹配逻辑,向内核注册了专属的linux_binfmt实例,同时提供了用户态的控制接口,是整个机制的核心。

  3. procfs控制接口:默认挂载在/proc/sys/fs/binfmt_misc/,是用户态和内核交互的唯一通道。用户通过这个目录下的文件完成规则的注册、查看、注销,内核也通过这个目录暴露规则的详情和状态。

  4. 用户态解释器/模拟器:真正负责解析和执行目标格式文件的程序,比如Wine、QEMU-user、Java虚拟机等。它必须是内核原生可执行的ELF程序,避免出现循环依赖。

2.2 核心工作原理

binfmt_misc的工作流程可以分为两大阶段:规则注册阶段程序执行阶段,整个过程完全符合Linux“一切皆文件”的设计哲学。

规则注册阶段

  1. 系统启动时,binfmt_misc内核模块完成初始化,挂载/proc/sys/fs/binfmt_misc/文件系统,同时把自己的linux_binfmt实例注册到内核的全局执行链表中。

  2. 管理员(root用户)向/proc/sys/fs/binfmt_misc/register文件写入规则配置字符串,内核解析配置,校验规则的合法性。

  3. 校验通过后,内核生成对应的规则结构体,插入到binfmt_misc的全局规则链表中,同时在/proc/sys/fs/binfmt_misc/目录下生成与规则同名的文件,用于后续查看和管理。

  4. 规则注册完成后,对全系统所有用户永久生效,直到手动注销或系统重启。

程序执行阶段

  1. 用户执行一个文件时,触发execve()系统调用,内核进入核心执行函数do_execve(),按优先级遍历全局执行链表中的所有linux_binfmt实例。

  2. 内核先调用原生ELF格式的加载函数,匹配失败后,再调用Shebang脚本的加载函数,如果依然失败,就会进入binfmt_misc的加载逻辑。

  3. binfmt_misc遍历自己的全局规则链表,先按魔数匹配,再按扩展名匹配,检查目标文件是否符合注册的规则。

  4. 匹配成功后,内核根据规则中的标志位,构建执行参数,把目标文件传递给注册的解释器,最终调用解释器的原生加载函数,完成程序的执行。

  5. 整个过程对用户完全透明,用户只需要像执行原生程序一样输入./xxx.exe,无需手动指定解释器,体验和原生ELF程序完全一致。

Part3binfmt_misc的实现机制

3.1 内核核心数据结构

(1)struct linux_binfmt

这是Linux内核所有二进制格式的统一抽象,是接入内核执行体系的唯一入口,每个二进制格式都必须实现这个结构体。binfmt_misc也不例外,它实现了专属的load_binary函数,核心定义如下:

struct linux_binfmt {    struct list_head lh;    struct module *module;    int (*load_binary)(struct linux_binprm *);    int (*load_shlib)(struct file *);    int (*core_dump)(struct coredump_params *cprm);    unsigned long min_coredump;};

其中最核心的是load_binary函数指针,binfmt_misc的所有格式匹配、解释器转发逻辑,都在这个函数中实现。当内核遍历执行链表时,会依次调用每个格式的load_binary函数,直到有一个函数执行成功。

(2)struct binfmt_entry

这是binfmt_misc用来存储每一条注册规则的结构体,每一条注册的格式规则,都会对应一个binfmt_entry实例,核心字段包括:

  • 规则名称、类型(魔数匹配/扩展名匹配)

  • 魔数、掩码、偏移量、扩展名等匹配特征

  • 解释器的绝对路径、执行标志位

  • 全局链表节点、引用计数等管理字段

内核会把所有注册的binfmt_entry实例,通过双向链表串联起来,程序执行时遍历这个链表完成规则匹配。

3.2 二进制格式的注册与注销机制

binfmt_misc的规则注册,完全通过/proc/sys/fs/binfmt_misc/register文件实现,无需任何系统调用,符合Linux的设计哲学。

注册规则的标准格式

注册规则的配置字符串有固定的格式,以冒号分隔:

:name:type:offset:magic:mask:interpreter:flags

每个字段的含义如下:

字段含义说明
name规则名称,唯一标识这条规则,不能包含斜杠
type匹配类型,M表示魔数匹配,E表示扩展名匹配
offset魔数在文件中的偏移量,魔数匹配时使用,默认0
magic匹配特征,魔数匹配时为文件的二进制魔数,扩展名匹配时为文件后缀
mask魔数匹配的掩码,用于过滤不需要匹配的位,默认全匹配
interpreter解释器的绝对路径,必须是原生可执行的ELF文件
flags执行标志位,可选值包括P/O/C/F,控制执行行为

核心标志位说明

  • P:保留原始的argv[0],让程序能获取到自己的真实执行路径,避免解释器覆盖参数;

  • O:内核打开目标文件后,把文件描述符传给解释器,避免解释器无权限读取目标文件;

  • C:保留目标文件的setuid/setgid凭证,用于需要提权的场景,有安全风险,需谨慎使用;

  • F:固定解释器,注册规则时就把解释器加载到内核内存,执行时直接使用内存中的副本,是容器/Chroot跨架构执行的核心标志,避免容器内找不到解释器的问题。

注销机制

注销规则同样通过procfs接口实现,分为两种方式:

  1. 注销单条规则:向规则对应的文件写入-1,例如echo -1 > /proc/sys/fs/binfmt_misc/jar

  2. 清空所有规则:向register文件写入-1,例如echo -1 > /proc/sys/fs/binfmt_misc/register

内核收到注销请求后,会把对应的binfmt_entry从全局链表中移除,释放相关资源,规则立即失效。

3.3 程序执行的完整内核流程

当用户执行一个非原生格式的文件时,binfmt_misc的完整执行流程如下:

  1. 用户调用execve()系统调用,内核创建linux_binprm结构体,读取文件的前128字节,用于格式匹配。

  2. 内核遍历全局formats链表,先调用ELF格式的load_binary,匹配失败后调用Shebang格式的load_binary,再次失败后,进入binfmt_misc的load_binary函数。

  3. binfmt_misc遍历自己的全局规则链表,先处理魔数匹配规则,再处理扩展名匹配规则,逐一比对文件的特征。

  4. 匹配成功后,内核校验解释器的路径和权限,根据标志位处理执行参数,把目标文件的路径或文件描述符传递给解释器。

  5. 内核重新调用search_binary_handler()函数,执行解释器的原生加载逻辑(解释器是ELF格式),最终完成程序的启动。

  6. 如果所有规则都匹配失败,binfmt_misc返回错误,内核最终抛出“无法执行二进制文件”的错误提示。

Part4binfmt_misc应用场景

binfmt_misc的灵活性,让它在Linux生态中有着极为广泛的应用,几乎所有“跨格式、跨架构”的程序执行场景,都离不开它的支撑。

4.1 跨架构程序执行与容器云原生(最核心场景)

这是binfmt_misc目前最主流的应用,也是云原生跨架构开发的核心基石。

在x86_64服务器上开发、运行ARM64/RISC-V/MIPS架构的程序,或者用Docker Buildx构建多架构镜像,背后全是binfmt_misc + QEMU-user-static的组合。注册了对应架构的QEMU规则后,你可以在x86机器上直接执行./aarch64-program,就像运行原生程序一样,完全不用手动输入qemu-aarch64 ./aarch64-program

Docker的多架构镜像构建,更是完全依赖binfmt_misc实现。没有它,你无法在x86服务器上构建出ARM64的镜像,更无法实现一次构建、多架构分发的云原生最佳实践。

真实应用:某云厂商的容器服务平台,通过binfmt_misc + QEMU实现了多架构镜像的统一构建,开发者无需针对x86、ARM64、RISC-V分别准备构建机,在x86平台上就能完成所有架构的镜像构建,构建效率提升了60%,机器成本降低了70%。

4.2 Windows程序兼容执行

Linux桌面端的Windows程序兼容,完全离不开binfmt_misc的支撑。

我们常用的Wine(Windows兼容层)、Proton(Steam Linux游戏兼容层),都是通过binfmt_misc注册.exe.msi格式的处理规则。注册完成后,你在Linux里直接双击.exe文件,或者在终端输入./xxx.exe,就能直接运行Windows程序,无需手动输入wine xxx.exe,体验和原生Linux程序完全一致。

真实应用:Steam Deck掌机能够无缝运行上万款Windows游戏,核心就是Proton + binfmt_misc的组合。用户在Steam里点击启动游戏,系统通过binfmt_misc自动调用Proton加载Windows游戏程序,用户完全无感知,实现了Windows游戏在Linux平台的无缝运行。

4.3 跨平台语言程序的直接执行

对于Java、.NET Mono、Python等跨平台语言,binfmt_misc可以实现程序的直接执行,无需手动输入解释器命令。

比如注册了.jar格式的规则后,你可以直接执行./xxx.jar,等效于java -jar xxx.jar;注册了.pyzPython包的规则后,直接执行./xxx.pyz就能运行,无需手动调用Python解释器。这对于跨平台程序的分发和使用,带来了极大的便利,用户无需记住复杂的启动命令,像执行原生程序一样就能运行跨平台应用。

4.4 嵌入式开发与IoT固件仿真

嵌入式开发经常需要调试ARM、MIPS、RISC-V等不同架构的固件,传统方式需要专门的硬件开发板,调试成本极高。而通过binfmt_misc注册对应架构的QEMU规则后,就可以直接chroot到固件的文件系统中,运行里面的程序、调试漏洞、分析功能,无需任何硬件设备。

真实应用:IoT安全研究人员通过binfmt_misc + QEMU-user,直接仿真路由器的MIPS架构固件,分析恶意程序的行为、挖掘设备漏洞,整个过程在普通x86电脑上就能完成,无需专门的硬件设备,漏洞挖掘效率提升了数倍。

Part5实战:binfmt_misc常用操作

光懂理论不够,实际工作中能查看、注册、配置binfmt_misc,才是真的掌握

5.1 前置准备:挂载与检查

主流Linux发行版默认开启了binfmt_misc内核模块,我们只需要检查是否正常挂载即可:

# 检查binfmt_misc是否已挂载mount | grep binfmt_misc

正常输出如下:

binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec,relatime)

如果没有挂载,执行以下命令手动挂载(需要root权限):

# 临时挂载mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc# 开机自动挂载,在/etc/fstab中添加以下行binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc defaults 0 0

同时可以通过以下命令检查内核是否开启了binfmt_misc支持:

cat /boot/config-$(uname -r) | grep CONFIG_BINFMT_MISC

正常输出应为CONFIG_BINFMT_MISC=yCONFIG_BINFMT_MISC=m

5.2 查看已注册的二进制格式

# 查看所有已注册的格式规则ls /proc/sys/fs/binfmt_misc/# 查看某条规则的详细信息,比如qemu-aarch64cat /proc/sys/fs/binfmt_misc/qemu-aarch64# 查看binfmt_misc的全局状态cat /proc/sys/fs/binfmt_misc/status

以qemu-aarch64规则为例,典型的输出如下:

enabledinterpreter /usr/bin/qemu-aarch64-staticflags: Foffset 0magic 7f454c460201010000000000000000000200b700mask ffffffffffffff00fffffffffffffffffeffffff

5.3 实战:注册自定义格式规则

以下是3个最常用的实战案例,均需要root权限执行。

案例1:注册Java .jar文件直接执行规则

# 注册.jar格式规则echo ':jar:E::jar::/usr/bin/java:POC' > /proc/sys/fs/binfmt_misc/register# 给jar文件添加执行权限chmod +x xxx.jar# 直接执行jar文件,等效于java -jar xxx.jar./xxx.jar

案例2:注册Windows .exe文件Wine执行规则

# 注册.exe格式规则,匹配MZ魔数echo ':exe:M::0::MZ::/usr/bin/wine:F' > /proc/sys/fs/binfmt_misc/register# 给exe文件添加执行权限chmod +x xxx.exe# 直接执行exe文件,等效于wine xxx.exe./xxx.exe

案例3:注册ARM64跨架构执行规则(Docker多架构构建必备)

# 注册ARM64 ELF文件匹配规则,使用qemu-aarch64-static,核心是F标志echo ':qemu-aarch64:M::0::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-aarch64-static:F' > /proc/sys/fs/binfmt_misc/register# 注册完成后,即可直接执行ARM64程序,或用Docker Buildx构建ARM64镜像./aarch64-programdocker buildx build --platform linux/arm64 -t my-image:arm64 .

5.4 注销已注册的规则

# 注销单条规则,比如jar规则echo -1 > /proc/sys/fs/binfmt_misc/jar# 清空所有已注册的规则echo -1 > /proc/sys/fs/binfmt_misc/register

Part6binfmt_misc常见问题

很多人之所以踩坑,是因为只复制了注册命令,忽视了binfmt_misc的底层逻辑,导致出现各种诡异问题。

6.1 最常见:注册成功但执行失败

这是最容易遇到的问题,注册规则成功了,但执行文件还是报错“无法执行二进制文件”,核心原因有4个:

  1. 解释器路径错误:解释器必须写绝对路径,而且必须真实存在,同时解释器本身必须是原生ELF格式,不能是需要binfmt_misc处理的文件,否则会出现循环依赖;

  2. 匹配规则错误:魔数、掩码、偏移量配置错误,比如ELF文件的架构位匹配错误,掩码没有正确过滤无关位,导致匹配失败;

  3. 权限问题:目标文件没有添加执行权限(chmod +x),解释器没有执行权限,或者非root用户注册规则(只有root能注册规则);

  4. 标志位配置错误:没有添加P标志,导致argv[0]被覆盖,程序启动异常;没有添加O标志,导致解释器无权限读取目标文件。

6.2 最容易踩坑:容器/Chroot环境中解释器找不到

这是跨架构容器构建最常见的坑:宿主机注册了规则,解释器路径是/usr/bin/qemu-aarch64-static,但构建容器时,还是报错“无法执行二进制文件”。

核心原因是:默认情况下,内核执行程序时,会到容器/Chroot的文件系统中找解释器,而容器内的/usr/bin目录下没有qemu-aarch64-static文件,自然会报错。

解决方法:注册规则时必须添加F标志。这个标志会让内核在注册规则时,就把解释器的内容加载到内存中,执行程序时直接使用内存中的解释器副本,不需要到容器/Chroot的文件系统中查找。这就是Docker多架构构建的规则必须带F标志的核心原因。

6.3 安全误区:随意注册规则带来的安全风险

binfmt_misc是内核级的程序执行机制,root注册的规则对全系统所有用户生效,一旦滥用,会带来严重的安全风险:

  • 如果注册了恶意规则,比如匹配所有ELF文件,用恶意解释器执行,会导致全系统的程序执行被劫持,攻击者可以轻松实现提权、留后门;

  • 随意开放/proc/sys/fs/binfmt_misc/的写入权限,会导致非root用户可以注册恶意规则,实现权限提升;

  • 滥用C标志(保留setuid凭证),会导致恶意程序通过binfmt_misc实现提权,引发严重的安全漏洞。

安全原则:只有root用户能操作binfmt_misc的注册/注销接口,只注册可信的规则,谨慎使用C标志,避免安全风险。

6.4 认知误区:binfmt_misc和Shebang是重复的?

很多人会问:Shebang也能实现脚本的直接执行,为什么还要binfmt_misc?二者有本质的区别,完全不是替代关系:

  1. 支持的文件类型不同:Shebang只能处理文本脚本,无法处理二进制文件,比如exe、跨架构ELF这些二进制格式,Shebang完全无能为力;

  2. 是否需要修改文件:Shebang必须写在文件的开头,需要修改源文件;而binfmt_misc基于文件的魔数、扩展名匹配,不需要修改文件本身,比如你不用修改Windows的exe文件,就能直接执行;

  3. 生效范围不同:Shebang是单文件级的,每个文件都要单独添加;binfmt_misc是系统级的,注册一次,所有匹配的文件都生效,无需逐个修改。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-04 13:53:53 HTTP/2.0 GET : https://f.mffb.com.cn/a/488160.html
  2. 运行时间 : 0.149518s [ 吞吐率:6.69req/s ] 内存消耗:4,690.31kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=8cba9355bb18a8a00f42194df693285a
  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.000492s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000984s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000332s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000266s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000616s ]
  6. SELECT * FROM `set` [ RunTime:0.000207s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000575s ]
  8. SELECT * FROM `article` WHERE `id` = 488160 LIMIT 1 [ RunTime:0.000493s ]
  9. UPDATE `article` SET `lasttime` = 1783144433 WHERE `id` = 488160 [ RunTime:0.014401s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000397s ]
  11. SELECT * FROM `article` WHERE `id` < 488160 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000504s ]
  12. SELECT * FROM `article` WHERE `id` > 488160 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000502s ]
  13. SELECT * FROM `article` WHERE `id` < 488160 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.011160s ]
  14. SELECT * FROM `article` WHERE `id` < 488160 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002913s ]
  15. SELECT * FROM `article` WHERE `id` < 488160 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.011805s ]
0.151146s