【问题标题】:Set Max Size to folder for users file manager php mysql将最大大小设置为用户文件管理器 php mysql 的文件夹
【发布时间】:2021-07-20 20:26:58
【问题描述】:

希望你一切都好。
我正在使用 MySQL 和 AdminLTE3 在纯 PHP 中创建一个学习平台。
我到了为每个用户创建文件管理器的时候,却陷入了以下困境。
我在文件夹中有以下结构:
/var/www/html/uploads/users/<% hash (USER ID)%>,我正在寻找的是每个文件夹<% hash (USER ID)%> 每个用户的最大大小为 2GB。
我正在使用 MacOs BigSur 进行开发,但在生产中它将在 Ubuntu Server 18 上!

我没有尝试设置max_file_size_upload,我尝试将每个用户文件夹的最大大小设置为 2gb

【问题讨论】:

  • 我认为这在 php.ini 中是不可能的。这不是你可以在 Ubuntu 中设置的吗?我认为您应该编写一个每 x 分钟运行一次的脚本,并将每个文件夹的配额更改为 2GB。不要问我怎么做,只是为你指明正确的方向。
  • 嗨!根据我在其他地方的发现,用 php 是不可能的,这是你正确的操作系统的东西,问题是,我没有找到与文件夹大小有关的任何东西!问候!
  • 如果您无法在操作系统级别执行此操作 - 那么您仍然可以检查他们的文件夹内容已经有多大,并且如果加上新上传文件的大小超出了您的限制 - 那么您不会将上传的文件从临时文件夹移动到目的地,而是给用户一条错误消息......
  • 无论何时修改某些内容(例如上传文件),您都需要手动calculate the folder size
  • 这是个好主意,非常感谢您的贡献。我将找出如何获取文件夹的当前大小并考虑其余代码!您好,贡献良多!

标签: php html mysql linux apache


【解决方案1】:

它将是哪种类型的文件?我会非常谨慎地允许用户将任意文件上传到我的网络服务器。如果他们上传.php 文件,他们将能够以运行网络服务器的用户身份运行任何东西。

事实上,我会将它们保存在数据库中,并使用字段来创建元数据。这样,您可以压缩和保存文件,并将大小和文件名存储为元数据。如果你使用 if 做参考等,不需要快速访问,我会推荐这个。

或者,作为this linux.SE answer states,您可以为每个用户创建一个挂载文件夹,并让文件系统整理有关配额的所有内容。我可能还会以某种方式查看chrooting 文件夹。这(理论上)还允许您授予他们sftp/ssh 访问文件的权限。

我也会考虑在类似于您的生产服务器的环境中做所有事情。 浮现在脑海中。

或者,如果所有文件上传都由 php 处理,您可以保存 used file space 并保持运行总数,确保在您的 php 脚本中它们没有超出配额。

【讨论】:

  • 感谢您的回复。我过滤了一些扩展名,因此它们是不允许的。例如,.PHP / .JS / .PY / .SH / 等等!
  • 确保 .php3 .phtml 也被阻止 - 或确保您的网络服务器知道不允许这些文件夹中的 php 文件另见 stackoverflow.com/questions/21469145/…
猜你喜欢
  • 2021-07-16
  • 1970-01-01
  • 1970-01-01
  • 2012-08-04
  • 1970-01-01
  • 1970-01-01
  • 2019-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多