php上传大文件失败多种原因_php大文件上传终极设置教程

发布时间:2020-08-27编辑:脚本学堂
本文介绍了php上传大文件失败的原因,以及解决php大文件上传问题的方法与技巧,文件上传时存放文件的临时目录是否开启,max_execution_time 的值必须足够大等,需要的朋友参考下。

php上传大文件失败怎么办?有什么解决方法?对php如何上传大文件不清楚的朋友,可以参考下脚本学堂小编带来的这篇教程。

1)文件上传时存放文件的临时目录必须是开启的并且是 PHP 进程所有者用户可写的目录。
如果未指定则 PHP 使用系统默认值。
php.ini文件中upload_tmp_dir,为php上传的文件放置的临时目录,要想上传文件,需要存在此临时文件目录,并该文件夹有写入权限。

2)max_execution_time 的值必须足够大。变量 max_execution_time 设置了在强制终止脚本前PHP等待脚本执行完毕的时间,此时间以秒计算。
当脚本进入了一个无限循环状态时此变量非常有用。php大文件上传设置方法

然而,当存在一个需要很长时间完成的合法活动时(例如上传大型文件),这项功能也会导致操作失败。

必须考虑将此变量值增大,以避免php在脚本正在执行某些重要过程时将脚本关闭,例如设置为 90 秒。
max_execution_time = 90
注意,在php函数中还有个 set_time_limit 函数,和以上这个设置的作用是相同的,区别:
以上是在 php.ini 文件中设置的,而 set_time_limit 是写在php文件中的。

可以通过在页面中用 set_time_limit 设置程序的最长执行时间,比如无限制即:set_time_limit(0);

3)file_uploads = On 默认值为on,意思是允许通过 HTTP 进行文件上传,此选项不能设置为OFF。

4)upload_max_filesize = 2M 设定文件上传的大小的最大值,php.ini配置文件中的默认文件上传大小为2M。php上传大文件问题解析 

在编写文件上传功能时通过设置上传文件最大大小的表单区域,即允许上传文件的最大值,max_file_size(隐藏值域)的值来规定上传文件的大小,其实一般别人可以绕过这个值,所以安全起见,最好是在 php.ini 配置文件中配置 upload_max_filesize 选项,设定文件上传的大小。

默认 upload_max_filesize = 2M,即文件上传的大小为2M,如果想上传超过8M的文件,比如20M,(www.jb200.com)必须设定upload_max_filesize = 20M。

5)post_max_size 这个值也必须足够大。这个变量也是一个同表单提交相关的变量,它限制的是客户端通过POST方法进行一次表单提交时PHP程序所能够接收的最大数据量。一般情况下,将此值的值设置的比 upload_max_filesize 略大即可,比如要上传20MB的文件,此值可以设置为 21MB。

6)max_input_time 此变量可以以秒为单位对通过POST、GET以及PUT方式接收数据时间进行限制。如果应用程序所运行环境处在网络比较慢的情况下,则需要增加此值以增大接收数据所需要的时间,比如将此值设置为 90秒。
max_input_time = 90

7)memory_limit 也必须足够大,为了避免正在运行的脚本大量使用系统可用内存,php允许定义内存使用限额。
通过memory_limit变量来指定单个脚本程序可以使用的最大内存容量。变量memory_limit的值应当适当大于post_max_size的值。

8)另外,如果主机是nginx,可以在 nginx配置文件中添加 client_max_body_size 20m;
表示最大允许上传 20MB

nginx 配置文件的位置一般是:/usr/local/nginx/conf/nginx.conf。