【问题标题】:Unable to get file upload permissions for PHP file manager无法获取 PHP 文件管理器的文件上传权限
【发布时间】:2015-10-28 21:10:20
【问题描述】:

我的网站位于共享主机上。我一直在使用 FTP 和 PHP 文件管理器来上传和删除文件。最近我发现了一个由于权限而无法删除的文件,无论是在 PHPFM 中还是在 FTP 中。所以我使用 DirectAdmin(我计划的唯一选项)来重置所有权限。然后我将 public_html 和子文件夹中所有文件的所有权限递归设置为 777。我只知道它允许我做的比任何其他权限变体都多。

现在站点以静态方式运行,我可以打开 PHP 文件管理器,它没有上传文件的权限。但是,我可以在 DirectAdmin 中上传文件,但这感觉不安全。 PHP 文件管理器显示:“I/O 错误”。目录如下所示:

1422 和 1420 是什么意思?我该怎么做才能再次上传文件?谢谢你的帮助。

【问题讨论】:

  • 1422 是你的 linux user_id 和 1420 group_id。
  • 设置 777 并在服务器中使用文件管理器脚本是一个相当严重的风险,特别是如果文件夹权限设置为 777... 你的 php 文件管理器在哪里?它是否能够访问该文件夹以及要从其所在位置添加/修改/删除的文件?
  • 1422 和 1420 是所有者和组 ID,很可能它们不是 root 用户。如果您将所有内容都设置为 777(包括文件夹),通常这些 id 无关紧要...也可能是 php.ini 上的设置禁止上传输入,您的主机可能已更改它...
  • 您是用户 1422,属于组 1420。现在您拥有完全权限。
  • 安全的做法是将文件设置为 644 和文件夹 755。这使您拥有更改文件和写入目录的唯一权限,但保留其他所有人的读取权限。 Apache 通常以另一个用户身份运行,因此您必须授予它读取文件和目录的权限。

标签: php apache permissions


【解决方案1】:

1422 是文件所属的 user_id,1420 是它所属的 group_id。

Linux 有一个权限系统,您可以在其中向所有者、您的组和其他所有人授予特殊权限。

权限 777 表示每个人都可以读/写/执行,您的组 (1420) 可以读/写/执行,而您(用户 1422)可以读/写/执行文件。

Permissions: 
1 is execute file or open directory 
2 is write 
4 is read

读/写权限为2+4=6,读/执行(或打开目录)为1+4=5

这三个数字代表[所有者][组][每个人],因此将文件设置为 644 意味着用户可以读取/写入,而其他人只读取文件。

编辑:安全的做法是将所有文件设置为 644,将目录设置为 755。私有文件应为 600,可执行文件应为 755(PHP 文件不可执行)。

Apache 以用户 apache 或 httpd 运行,后者是另一个用户,因此您必须授予“每个人”权限才能读取您的 PHP 文件和目录。

Edit2:如果需要PHP上传文件,真的是用apache/httpd用户来完成。因此,您需要授予“每个人”完全权限才能打开目录和读/写 777。文件权限应为 666。

【讨论】:

  • 谢谢!!我已将文件设置为 644,包括 php 文件管理器 .php 文件,并将文件夹设置为 755,当我尝试上传文件时仍然看到“I/O 错误”。 php.ini 对我来说是无法访问的。 DirectAdmin 有效。也许唯一剩下的就是等待支持回答?..
  • 能否解释一下“I/O 错误”、写入错误、登录错误...
  • 写入错误。当文件管理器无法写入文件时,它会以这种方式写入。
  • 如何使用其他 ftp 程序,例如 Chrome 或 Firefox (ftp://username:password@ftp.host.com/path)
  • 问题是我需要自己的 PHP 脚本来在那里写文件...好的!我认为这是我应该联系支持人员的事情。谢谢大家:)
猜你喜欢
  • 1970-01-01
  • 2013-02-05
  • 1970-01-01
  • 2021-11-24
  • 2019-09-13
  • 2014-06-24
  • 2012-10-21
  • 2011-04-08
  • 1970-01-01
相关资源
最近更新 更多