open_basedir 对父文件夹失去兴趣?

open_basedir loose it interest with a parent folder?

我使用 open_basedir 和 ini_set 函数。我想将它限制在这样的特定目录中

__DIR__ . '/my_directory';

这样就可以了!我不能用这个包含父文件夹

include "../parent/my_file.php";

但是如果我用这个

include include __DIR__ . '../parent/my_file.php';

尽管 open_basedir 处于活动状态,但我可以访问父文件夹。

当我获得所有包含的文件时,我可以看到我的父文件夹包含如下:

"/my_directory/../parent/my_file.php

所以我认为 PHP 将它们理解为一个文件夹,并且看不到它是父文件夹。我是对的?

你知道这个问题是否有解决方案吗?因为我需要将包含限制在我的特定文件夹中,而且我不想在层次结构中走得更高。

PS。我是 SO 的新手。我希望这是可以理解的! 提前致谢!

即使在 PHP 中指定 open_base_dir 时,也有几个命令可以绕过它,如果它们被启用(比如 system()

您应该确保您的 Apache(或其他网络服务器)配置也将用户限制为特定根用户。

共享 Linux 主机帐户的默认 open_basedir 限制没有任何价值。 PHP 脚本可以访问您主机帐户中的所有目录。

如果您的 apache 配置有: php_admin_value open_basedir "/var/www/vhosts/httpdocs" 这将覆盖您的 php 设置。

请像这样创建一个文件来检查 php 信息并验证其中的设置:

<?php
phpinfo();
?>