【问题标题】:Is there any way to upload a large file (over 2GB) to a webserver through 32bit php?有没有办法通过 32 位 php 将大文件(超过 2GB)上传到网络服务器?
【发布时间】:2020-08-19 08:33:22
【问题描述】:

我在运行 Raspbian Lite 的 Raspberry Pi 4 上设置了家庭服务器。我在上面构建了一个运行 Apache 和 PHP 的小型网络服务器。我在这个网络服务器上有文件上传选项,允许我和其他人通过网页通过 html 表单上传文件,该表单转到处理文件上传、更新数据库等的 PHP 脚本。

此服务器非常适合较小的文件,但我最近尝试添加一个大小约为 2GB 的文件。该网页将加载超过 10 分钟,然后出现“连接重置”错误。

我已经编辑了我的 php.ini 和 apache2.conf 以更改所有相关选项以允许上传大文件大小、增加超时等。经过大量搜索后,我发现问题在于我的服务器上的处理器是32 位,因此 PHP 也是如此。显然 32 位 PHP 不适用于上传这种大小的文件。

我已经考虑过可能的解决方案,例如以某种方式直接通过 FTP 从 html 表单上传并绕过 http 或在上传时以某种方式将文件分成较小的部分,但我不知道从哪里开始。

有人有什么想法吗?

【问题讨论】:

  • 你能解决这个问题吗?你检查我的答案了吗?
  • 没有。问题在于我使用的操作系统(Raspbian Lite)是 32 位的。 32 位 PHP 不支持超过 2GB 的文件上传。更改配置文件是我做的第一件事。

标签: php forms apache raspberry-pi


【解决方案1】:

似乎 PHP 在上传大小方面有限制,特别是在 32 位系统上,但是通过 HTTP 上传大文件 (2GB) 可能不是一个好主意,一个好的解决方案是使用 PHP FTP extension functions

【讨论】:

  • 这看起来只适用于服务器上已经存在的文件,我想将文件从网站上传到服务器。
【解决方案2】:

据我所知,文件大小没有限制,您需要检查的是 upload_max_filesizepost_max_size 的设置至少允许 2048 MB,如下所示:

upload_max_filesize = 2048M
post_max_size = 2048M

下一步是检查分配给 PHP 的内存限制是多少,它必须始终高于之前的两个值。所以基本上你的服务器至少需要 3 或 4 GB 的 RAM,因为你需要为 PHP 进程分配至少 2049 或更多。

这部分:

memory_limit = 2560M

这应该可以,但这也取决于您的服务器的配置和规格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 2018-09-21
    • 2020-09-22
    • 2017-04-05
    • 1970-01-01
    相关资源
    最近更新 更多