我上传的文件很难找到这个问题的答案。有些时候我的文件上传在move_uploaded_file()
失败,所以我被告知这可能是一个内存问题。不幸的是,我找不到可以回答这个问题的文件。
我上传的文件是400mb,我将upload_max_filesize
和post_max_size
设置为500mb。出于测试目的,max_execution_time
和max_input_time
设置为60000。我的memory_limit
设置为默认128mb。这应该改变吗? 如何为400mb文件计算memory_limit
与upload_max_filesize
和post_max_size
的最佳余额?
答案 0 :(得分:3)
如果上传失败,您甚至不应该尝试执行move_uploaded_file。适当的简单上传处理方法是
if ($_FILES['yourfile']['error'] !== UPLOAD_ERR_OK) {
... upload failed, bail out
die("Failed upload");
}
// got here, upload must've worked
move_uploaded_file(...);
错误代码为detailed here,并会告诉您文件是否因PHP设置而无法处理。
至于PHP设置本身。您的post_max_size
应该是允许的最大文件大小,以及您在文件上传时提交的其他数据。 memory_limit必须大于最大文件大小,加上额外的以允许脚本开销。 PHP的执行时间限制不适用于上传,因为脚本计时器直到上传完成后才会启动。