我使用带有ini_set函数的open_basedir。我想把它限制在一个特定的目录中,如下所示
__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。我是个新手。我希望这是可以理解的!提前感谢!
发布于 2019-08-19 17:57:23
即使在PHP中指定open_base_dir,如果启用了一些命令(如system() ),也可以绕过这些命令。
您应该确保您的Apache (或其他user服务器)配置也将用户限制到某个根目录。
共享Linux主机账户的默认open_basedir限制没有价值。PHP脚本可以访问您的托管帐户中的所有目录。
如果你的apache配置有:php_admin_value open_basedir "/var/www/vhosts/httpdocs",那么这将覆盖你的php设置。
请创建一个文件来检查phpinfo,并验证其中的设置:
<?php
phpinfo();
?>https://stackoverflow.com/questions/57553937
复制相似问题