上图file_exists方法会触发phar://伪协议对phar文件的反序列化对象的操作。
在thinkphp框架中目标对象的wakeup魔术方法是会执行的,但是destruct魔术方法不一定会。
因为像我碰到的问题就是我的项目主目录下的/runtime目录没有Web服务器用户的写入权限会导致日志写入失败报错:think\exception\ErrorException: mkdir(): 权限不够 。导致后续代码不会执行,因此反序列化生成的对象就无法调用destruct魔术方法,当把吸入权限补上之后就OK了。