这是一个由于翻译问题引发的“血案”。
这两天做DVWA(不知道什么时候暗戳戳升级到v1.10)练习,做到File Inclusion的high-level时,发现不能远程文件包含,一查php.ini文件,发现allow_url_include没有设置为On(默认设置为Off),再查官方文档,发现是自己没有提前修改php的配置(自己的锅,哭着也要背QAQ)。
DVWA的README.md中说明
但是,我在DVWA的根目录下发现了一个php.ini文件。
打开里面一看,发现里面只有这几行,但是亮点在注释:这个文件尝试覆盖原本的php.ini文件,并不是总是有效。显然,我这是无效的。
然后就想,如果在不修改php.ini的前提下,还可以怎么样修改allow_url_include。查看官方文档,发现allow_url_include可修改的范围是 PHP_INI_ALL,根据截图,可以认为在哪都可以修改allow_url_include这个参数。
然后决定在网站根目录下的.htaccess中修改。
但是发现然并卵,没有用!!!!执行命令var_dump(ini_get('allow_url_include'));发现,结果为string(1) "1",那就是说.htaccess并没有起作用。
又一个突然,翻到php.net的英文版,看到.....赤裸裸的写着“PHP_INI_SYSTEM”!!!这是神仙打架了嘛?
于是乎,找了一条在中英文版中都是PHP_INI_ALL的配置选项
php.ini默认不变,为128M,在.htaccess中修改为256M。然后再var_dump一下,发现结果是改变的。
所以,最终的结论就是allow_url_include的可配置范围是PHP_INNI_SYSTEM,只能在php.ini或httpd.conf中修改,暂时没有其他途径可以修改。php中文文档翻译出错了!
网友评论