上传 900MB(或更大)文件:PHP、Apache、本地网络

Posted

技术标签:

【中文标题】上传 900MB(或更大)文件:PHP、Apache、本地网络【英文标题】:Upload 900MB (or bigger) file: PHP, Apache, Local Network 【发布时间】:2017-09-13 23:41:07 【问题描述】:

我在本地机器上的 Apache/php 服务器上上传大于 500MB 的文件时遇到了麻烦。 我尝试过使用 php.ini 配置、.htaccess、ecc。 但我无法解决问题。

在我的 phpInfo 上,变量当前设置如下:

upload_max_filesize 2048M
post_max_size   2048M
memory_limit    1024M

我应该改变什么?我在 win7 上运行 xampp 3.2.2(win10 上同样的问题)。

Apache 版本 Apache/2.4.25 (Win32) OpenSSL/1.0.2j PHP/5.6.30

谢谢!

-----更新:这里有更详细的错误:

Warning: POST Content-Length of 941609661 bytes exceeds the limit of 524288000 bytes in Unknown on line 0
Notice: Undefined index: page_selector in C:\xampp\htdocs\upload_file.php on line 6
Notice: Undefined index: nome_video in C:\xampp\htdocs\upload_file.php on line 7
Notice: Undefined index: file in C:\xampp\htdocs\upload_file.php on line 8
Notice: Undefined index: file in C:\xampp\htdocs\upload_file.php on line 31
Notice: Undefined index: file in C:\xampp\htdocs\upload_file.php on line 33
Notice: Undefined index: file in C:\xampp\htdocs\upload_file.php on line 34
Notice: Undefined index: file in C:\xampp\htdocs\upload_file.php on line 35
Notice: Undefined index: file in C:\xampp\htdocs\upload_file.php on line 36
Notice: Undefined index: file in C:\xampp\htdocs\upload_file.php on line 37
Notice: Undefined index: file in C:\xampp\htdocs\upload_file.php on line 38

报告的行在哪里:

$page = $_POST["page_selector"];
$nome_video = $_POST["nome_video"];
$label = $_FILES["file"]["name"];
$extension   = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
if ((($_FILES["file"]["type"] == "video/mp4")
|| ($_FILES["file"]["type"] == "audio/mp3")
|| ($_FILES["file"]["type"] == "audio/wma")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg"))

【问题讨论】:

所以 499 MB 大小有效,但 >500 MB 无效?您是否测试过是否上传了较小的文件? 您应该提供详细的错误消息。你也检查过这个:***.com/a/18414806/25429 感谢@zloster,我尝试过使用其他解决方案,如 .htaccess,但错误始终是相同的“警告:633016961 字节的 POST 内容长度超过未知中 524288000 字节的限制”第 0 行'。 php.ini 已设置,.htaccess 也设置正确,phpInfo 返回我设置的值,但我仍然收到错误。 @zloster 谢谢!经过一些不同的方法后,我终于按照您在链接解决方案中的建议尝试了github.com/blueimp/jQuery-File-Upload。有用。谢谢 【参考方案1】:

将变量upload_max_filesize, post_max_size, memory_limit in php.ini设置为正确的值并重新启动服务器,然后它应该可以工作了。

您可能编辑了错误的 php.ini 文件!检查phpinfo(),看看您是否真的编辑了正确的.ini文件。

【讨论】:

嗨,我检查了 phpInfo,.ini 文件是正确的。在我的 phpInfo 页面(xampp)上,变量是正确的。但我仍然无法上传大文件。我将尝试打印错误并将其粘贴到此处。谢谢 你重启服务器了吗? 警告:633016961 字节的 POST 内容长度超过了 Unknown on line 0 中 524288000 字节的限制 这是我得到的错误......在某个地方有一个限制......是的,我停止并重新启动了服务器。我应该重启电脑吗? 这意味着在您的文件中某处存在需要更改的值 524288000【参考方案2】:

解决方案!

php.ini 配置正确。该文件太大而无法由单个 POST 处理。所以我尝试了一个处理分块文件上传的插件。

有了这个方法(和这个插件),问题就完全解决了!

https://github.com/blueimp/jQuery-File-Upload

感谢大家的支持。

【讨论】:

你在说什么“上传配置”? [edited] 抱歉,“上传配置”是指我是如何上传文件的。具有 >500MB 文件的单个 POST 会触发错误。使用拆分/分块的文件上传我没有更多问题。

以上是关于上传 900MB(或更大)文件:PHP、Apache、本地网络的主要内容,如果未能解决你的问题,请参考以下文章

上传“较大”(超过 2MB)文件时的 PHP 文件上传问题

调试时文件上传返回空数组

选择文件,设置图像和上传,而不阻塞用户界面

为啥上传文件 ~2,5 MiB 或更大会导致连接重置?

文件上传到 azure 文件共享不适用于更大的文件

Alamofire 上传失败,文件超过 1MB