【发布时间】:2017-09-29 13:35:05
【问题描述】:
问题
假设我有以下目录结构:
root
| 123
| | index.php
| | abc
| | | file.php
| 456
| | another_file.php
如何配置 PHP 以使 index.php 可以包含 file.php 但不包含 another_file.php?
换句话说,include("abc/file.php") 应该可以工作,但include("../456/another_file.php") 不应该。
原因
我需要这样做的原因是因为在我的 Web 服务器上,我在同一个文件系统上有两个虚拟主机,它们用于两个不同的用户。每个用户都应该能够包含位于他们自己文件夹中的文件,但他们不应该能够包含来自其外部的文件。
每个虚拟主机都有自己的 php.ini 文件(由 suPHP 提供)。
研究/尝试
我曾尝试使用include_path php.ini 设置(请参阅:http://php.net/manual/en/ini.core.php#ini.include-path),但无济于事。我还在 StackOverflow 上广泛研究了这个主题,但无济于事 - 即 How do I set an absolute include path in PHP? 没有帮助,因为我不希望这是可选的或需要附加到文件的一段代码。
【问题讨论】:
-
最好的解决办法是在操作系统级别阻止它。您甚至可以使用 suPHP,一个专门为此创建的模块。否则,您很快就会知道它们是读取文件的许多其他方式。