我想要包含文件 /httpdoc/a.php ,但此文件包含文件 /httpdoc/b/c.php 和 / http / d / e.php 即可。如何只允许包含 c.php ?我想仅允许来自 / httpdoc / b 。
File: /httpdoc/a.php:
<php
include '/httpdoc/b/c.php'; // should be included
include '/httpdoc/d/e.php'; // shouldn't be included
有什么方法可以从PHP中的脚本执行此操作,仅适用于此脚本?我想允许动态包含所选目录。其他脚本应该能够包含所有文件,因此更改应该是本地的。
答案 0 :(得分:0)
从我的观点来看,没有太多意义,因为如果脚本无法包含他们想要的内容,脚本会抛出错误或异常。如果有必要,您可以通过删除运行PHP的用户的文件或文件夹权限来解决它。
答案 1 :(得分:0)
以特权用户身份登录。然后以PHP无法再访问它的方式更改'/ httpdoc / d'的权限。 该命令行可能看起来像这样:
chmod 700 -R /httpdoc/d
这样,只有该文件夹的所有者才能使用它及其所有子文件和子文件夹。 (如果运行PHP的用户 - 通常是'www-data'或'apache' - 是该文件夹的所有者,则必须更改文件夹所有者)
完成此操作后,请关闭错误报告。 例如:
@include "/httpdoc/a.php"
(还有其他方法可以这样做。例如,error_reporting())
关于您的评论:
有什么方法可以从PHP中的脚本执行此操作,仅适用于此脚本?我想允许动态包含所选目录。其他脚本应该能够包含所有文件,因此更改应该是本地的。
如果您有“/httpdoc/a.php”等文件,请不要100%信任,请执行以下操作。 将它们放在一个单独的目录中。您也可以将除秘密文件之外的所有其他文件(/http/d/e.php)放在那里。
按照此处所述配置该目录: