-
Notifications
You must be signed in to change notification settings - Fork 172
重定向目录的原理
Mingliang Tan edited this page Feb 20, 2019
·
2 revisions
代码里有很多处对路径的硬编码
- 对 php 目录的硬编码 /home/xiaoju/webroot/gulfstream/application
- 对 log 目录的硬编码 /home/xiaoju/webroot/gulfstream/log
- 对 apollo 开关目录的硬编码 /home/xiaoju/ep/apollo
Mac 机器上都没有 /home/xiaoju 这个目录。如果要修改源代码,则维护成本比较高。而且 php -S 启动之后只能处理一个模块。如果要回放多个模块则需要 php -S 启动多个进程。如果能够重定向目录,则可以
- 不修改源代码,把硬编码的绝对路径改成要回放的代码的目录
- 一个 php -S 进程回放任意模块
实现原理是用 libc 钩子修改了所有和路径相关的系统调用(主要是 open,fopen,xstat 和 lstat),把路径做一个replace。