PHP文件上传被部分上传“劫持”

时间:2009-03-04 02:38:36

标签: php post file-upload

我有一个网站每天都会收到30-40k的照片上传,而且我现在看到一个问题弹出频率更高。这个问题是:

我们的上传脚本(通过$ _FILES ['name'] ['tmp_name'])接收用户未上传的文件(照片)&收到的文件大部分是“部分”上传。

当然起初我以为这是我的PHP代码犯了一个简单的错误,我花了几天时间查看它以确保,但在检查代码后我发现通过HTTP POST收到的文件上传到PHP实际上是错误的文件。所以问题在它到达我的代码之前就已经发生了。脚本收到的tmp文件(phpxxxx)有时不正确,好像它被某个方式被另一个进程覆盖,并且通常被部分上传的文件覆盖。

有没有人见过这样的问题?任何帮助是极大的赞赏。在经过几天的搜索/询问其他PHP开发者之后,我将此作为最后的手段

所以回顾一下:

  • 用户上传照片
  • PHP脚本接收用户未上传的文件(预编码,通过/ var / tmp中的$ _FILES)
  • 通常收到的错误文件是部分上传或上传中断
  • 这似乎是随机而不是一直发生的

3 个答案:

答案 0 :(得分:2)

您可以为临时文件尝试不同的名称以避免被覆盖吗?你能确定新的,不正确和不完整的文件的来源吗?

这是一个开发环境吗?是否可能有多个用户同时上传文件?

尝试使用非常小的图像来检查SchizoDuckie文件大小问题是否正确。

尝试使用不同的导航器来消除这是一个本地问题的可能性很小的可能性。

检查存储临时文件的目录的权限。

答案 1 :(得分:1)

首先,检查PHP版本。

其次,检查文件上传限制和php.ini

中的POST_MAX_SIZE

可能只是有人试图上传过大的文件: - )

答案 2 :(得分:1)

PHP的内置文件处理不支持部分上传。

每次上传后关闭KeepAlives和/或发送'Connection:close'标题。

配置您的网络服务器以发送标题'Allow-Ranges:none'。