使用php / apache上传大文件(超过500MB)的服务。 uploadprogress
pecl扩展程序会跟踪上传进度。
此方案仅适用于小文件上传。
但是,上传大文件时出现问题。上传完成后,$ _FILES数组中有一个标准信息显示没有错误。问题是此时/ tmp / phpXXXX文件本身不存在。
我测试过,如果我们在上传过程中手动删除tmp文件,上传过程将不会停止,只有在上传完成后才会引发错误。
托管提供商表示没有删除tmp文件的维护脚本。此外,它说文件系统中的这些tmp文件几乎可以在上传结束之前使用,然后它们就会消失。
可能是由apache / server / php配置引起的吗?操作系统中是否有可能影响这些tmp文件的内容?
操作系统是Ubuntu 8 LTS
任何帮助将不胜感激!
答案 0 :(得分:1)
上传文件可能无法正常工作的原因有很多。
$POST_MAX_SIZE = ini_get('post_max_size'); $unit = strtoupper(substr($POST_MAX_SIZE, -1)); $multiplier = ($unit == 'M' ? 1048576 : ($unit == 'K' ? 1024 : ($unit == 'G' ? 1073741824 : 1))); if (isset($_SERVER['CONTENT_LENGTH'])) { if ((int) $_SERVER['CONTENT_LENGTH'] > $multiplier * (int) $POST_MAX_SIZE && $POST_MAX_SIZE) { $error = 'POST exceeded maximum allowed size.'; } }
$_FILES['myfile']['error']
> 0(见:http://php.net/manual/en/features.file-upload.errors.php)$_FILES['myfile']['name']
)move_uploaded_file
/ is_uploaded_file
返回false)!is_writable($targetDir)
答案 1 :(得分:0)
您是否检查过服务器LimitRequestBody参数?对于您尝试上传的文件,它可能不够高。
答案 2 :(得分:0)
您是否验证过您的php upload_max_filesize和post_max_size设置? (在你的php.ini文件中)
答案 3 :(得分:0)
上传完成后,即可 $ _FILES中的标准信息 数组显示没有错误。
我假设您检查了error
元素?它是一个整数,对应upload error constants之一,例如UPLOAD_ERR_INI_SIZE
。
据我了解,如果文件大小超过PHP UPLOAD_ERR_NO_FILE
或某些Apache限制(Arkh提到post_max_size
),也可以返回LimitRequestBody
备注:Ubuntu 10.04 LTS现已推出