【问题标题】:PHP Read files inside of the server rootPHP 读取服务器根目录内的文件
【发布时间】:2018-07-16 18:16:59
【问题描述】:

在我当前的 PHP 脚本中,我试图读取不在 /var/www/html 内的文件(该脚本似乎也受到限制)但在 /root/ 内或 /var/www/html 后面的任何地方的文件。

为了解释原因,我需要从我不希望在任何情况下(无论经过多少验证)下载或访问的文件中读取关键数据。

我搞砸了getcwd()chdir($_SERVER['DOCUMENT_ROOT']),但没有成功。

我的问题:这是否可能,如果可以,我该怎么做?

附:我的阅读方法只是标准的fopen($filename, "rb")fread

【问题讨论】:

  • 也许file_get_contents() 可以工作?
  • 您的open_basedir 设置为什么?
  • file_get_contents() 采用 $filename 的参数,因此我的系统不会受到影响。我需要能够从根目录中的文件中读取,file_get_contents() 将假定与 fread 相同
  • 使用phpinfo() 并查看您的open_basedir 值。该值“将 PHP 可以访问的文件限制为指定的目录树”。

标签: php server root fopen fread


【解决方案1】:

这取决于 php 是否具有访问所需文件的权限。您需要允许用户“www-data”(如果您在 linux 上使用 apache)能够读取文件。

【讨论】:

  • 您能否更具体地了解如何为此授予 php 权限?我已将 root 用户添加到 www-data 组,并允许他们访问 /root/ 和 /var/www/html/。从那里开始,我将如何从根目录读取,因为 PHP 脚本默认为其运行目录。
  • 应该不需要将root用户添加到www-data组。是根!您应该将这些文件存储在 Web 根目录之外的目录中,但 Apache 服务器用户(我们假设为 www-data)可以访问。我根本不会在其中使用/root/ 目录。
  • 我已经设法通过允许 www-data 访问 / 来修复它,因此我只需要一个简单的“../../../../root”就可以退出 PHP 目录/”。感谢您的帮助,因为它确实有帮助
猜你喜欢
  • 1970-01-01
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-29
相关资源
最近更新 更多