-
Notifications
You must be signed in to change notification settings - Fork 30
How PHPmicro work
Yun Dou edited this page Feb 6, 2021
·
5 revisions
micro是一个自执行文件,类似于7z或者WinRAR的自解压程序。
当micro被和php代码(或者phar包,这里简称为php代码)拼接时,micro直接执行被拼接的php代码。
大多数全局变量遵循cli的工作模式。较为特殊的有
- PHP_BINARY: 如果不进行INI配置(见INI Settings),PHP_BINARY变量被设置为空字符串
""
;否则为INI配置的值
如果一个文件流的绝对路径文件名等于被执行的micro sfx的绝对路径,则称它为自身的文件流。
对于micro中执行的php代码:
- 对打开的自身文件流使用ftell和fseek时,减去了sfx大小
- 对打开的自身文件流使用fstat时,其中的文件大小属性减去了sfx大小
也就是说,php代码中打开的自身文件,在php看来将会与被拼接的php代码一致,不会出现sfx的ELE/PE头或者INI设置。
这个设计的目的是如果一个文本php代码或phar文件打开自身(无论是通过include、require还是fopen系列函数),它的行为应该与这个代码被cli执行一致。