IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:PHP Internals

共 1 篇相关文章

IT 累计浏览 2,509

从php源码分析mkdir()函数

这篇讲的是PHP中`mkdir()`函数为何在不同环境下会出现诡异的行为差异。作者从一次WordPress漏洞分析中遇到的疑惑出发,发现当`recursive`参数为`false`或`true`时,函数在Windows+NTS(非线程安全)环境下能成功穿越目录创建文件夹,但在其他配置下却会失败。 为了彻底搞清楚,作者重新编译了PHP进行调试,对比了PHP 7.2.16的TS(线程安全)和NTS版本。测试结果揭示了一个关键规律:只有在非线程安全(NTS)版本且`recursive=false`时,`mkdir()`才能成功创建目录。 深入源码后,文章揭示了这背后是PHP内核的线程安全(TS)与非线程安全(NTS)机制在起作用,导致了函数内部对参数的处理逻辑产生分支。这不仅仅是一个简单的函数使用问题,更引出了理解PHP运行模式重要性的线索。文章从具体现象切入,通过编译调试和源码追踪,最终将问题落脚到了语言运行时的核心机制上。