Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP上传限制_Php_Security_File Upload - Fatal编程技术网

PHP上传限制

PHP上传限制,php,security,file-upload,Php,Security,File Upload,我有一个php上传脚本,它循环了18个文件,平均上传大小约为8MB,但网站并没有上传所有文件,但是如果我尝试使用2或3个文件,效果很好,那么出于安全原因或其他原因是否有限制 编辑:感谢您提供的所有答案,有多个答案是正确的,因此很遗憾,我无法将所有答案都标记为正确,但感谢您的尝试:)您有任何错误吗?如果没有看到它们,请查看php错误日志 尝试增加PHP的内存限制 ini_set('memory_limit', '128mb'); 尝试增加脚本的时间限制 set_time_limit(0); //

我有一个php上传脚本,它循环了18个文件,平均上传大小约为8MB,但网站并没有上传所有文件,但是如果我尝试使用2或3个文件,效果很好,那么出于安全原因或其他原因是否有限制


编辑:感谢您提供的所有答案,有多个答案是正确的,因此很遗憾,我无法将所有答案都标记为正确,但感谢您的尝试:)

您有任何错误吗?如果没有看到它们,请查看php错误日志

尝试增加PHP的内存限制

ini_set('memory_limit', '128mb');
尝试增加脚本的时间限制

set_time_limit(0); //infinite

你有什么错误吗?如果没有看到它们,请查看php错误日志

尝试增加PHP的内存限制

ini_set('memory_limit', '128mb');
尝试增加脚本的时间限制

set_time_limit(0); //infinite
在php.ini中进行更改

upload_max_filesize = 100M or your number

memory_limit = 128M or your number

在php.ini中进行更改

upload_max_filesize = 100M or your number

memory_limit = 128M or your number


@John我认为这与内存无关,相反,它的相关文件大小上传限制由php.ini决定,因此请尝试在php.ini中对此进行更改:

upload_max_filesize = 170M // 8 * 18 ~ 160
如果无法访问php.ini,可以尝试将此行添加到根目录中的.htaccess文件:

php_value upload_max_filesize 170M
注意:
如果某个文件大于内存限制,则脚本可能会归档。所以请记住,在上传过程中,内存用于存储文件。

@John我认为这与内存无关,相反,它的相关文件大小上传限制由php.ini决定,因此请尝试在php.ini中对此进行更改:

upload_max_filesize = 170M // 8 * 18 ~ 160
如果无法访问php.ini,可以尝试将此行添加到根目录中的.htaccess文件:

php_value upload_max_filesize 170M
注意:

如果某个文件大于内存限制,则脚本可能会归档。所以请记住,上传过程中用于存储文件的内存。

这可能是缓存问题,而不是PHP限制。hmmmmm,你知道解决方法吗?这可能是缓存问题,而不是PHP限制。hmmmmm,你知道解决方法吗?ini_set()对上传没有意义。行动起来太晚了。改为在php.ini文件中设置这些值。@hakre为什么会这样认为?如果文件存储在内存中,以便在上传过程中进行处理,这当然很重要。@hakre仔细想想,这与php.ini或运行时有什么不同。它们是相同的。您可能正在考虑最大上载文件大小,是的,应该在php.ini中设置。请求的POSTDATA加载到php内存中。如果触发MemoryLit,那么php将退出。ini_set()命令尚未执行。因此,如果php.ini中设置的内存限制太低,则无法对文件上载使用ini_set。ini_set()对上载没有意义。行动起来太晚了。改为在php.ini文件中设置这些值。@hakre为什么会这样认为?如果文件存储在内存中,以便在上传过程中进行处理,这当然很重要。@hakre仔细想想,这与php.ini或运行时有什么不同。它们是相同的。您可能正在考虑最大上载文件大小,是的,应该在php.ini中设置。请求的POSTDATA加载到php内存中。如果触发MemoryLit,那么php将退出。ini_set()命令尚未执行。因此,如果php.ini中设置的内存限制太低,则无法与文件上载的ini_设置有所区别。如果它与最大上载文件大小相关,则整个$_FILES数组将为空。情况并非如此,因为OP声明某些文件已上载。@John有一次,我上载了转储数据库,它很大,大小小于我的内存限制,但大于上载大小限制,更改上载大小限制可修复我的问题。请重新查看我的评论。如果所有文件大小之和超过php.ini定义的最大文件大小,则整个$\u FILES数组将为空。在这种情况下,由于上载了一些文件,它表示没有超过最大大小,但处理上载的内存不足,或者处理上载的时间不足。如果与最大上载文件大小相关,则整个$\u files数组将为空。情况并非如此,因为OP声明某些文件已上载。@John有一次,我上载了转储数据库,它很大,大小小于我的内存限制,但大于上载大小限制,更改上载大小限制可修复我的问题。请重新查看我的评论。如果所有文件大小之和超过php.ini定义的最大文件大小,则整个$\u FILES数组将为空。在这种情况下,由于上载了一些文件,这表明没有超过最大大小,但处理上载的内存不足,或者处理上载的时间不足。需要考虑的其他选项:
max\u file\u uploads
(出厂默认值为20,但这一值变化非常值得检查。)需要考虑的其他选项:
max_file_uploads
(出厂默认值为20,但此值变化很大,值得检查。)