以前小生不是搭建了一个web站点嘛,Apache+PHP的环境,由于在腾讯云的云主机里面,并非我能触摸到的真实设备,因此我一些本机须要上传到服务器的文件就须要经过QQ邮箱发送到腾讯云主机上面,后来由于腾讯云的IE浏览器出了点问题,致使不能访问网页,我就不能经过QQ邮箱来上传文件了,让我非常忧伤;可是我在看PHP教程的时候记得看过关于PHP上传文件的教程,在编译器上面把html的form表单写好了,在把相关的PHP代码写在后面,就是下面这个样子:php
写好以后教程上面是采用上传GIF文件,可是我把它改了一下,改上传一个我喜欢的一首歌,那首歌有10M,上传时发现不行,既没有提示失败也没提示成功,我觉得是个人代码出问题了,仔细看也没看出什么问题,而后我仍是按照教程上面来,改为上传GIF文件,相关的代码我也改了GIF文件类型的,发现上传GIF是能够的,那就证实个人代码没有问题,我多改了几回不一样的文件,有的能有的不能,仔细对比上传经过的,发现小文件均可以上传,大一点的文件就不能够了,网上查找了一下相关资料,发现须要改php.ini配置文件,具体以下:html
为何上传大文件老是失败,可是上传小文件就没有问题。小编也不得其解,网上搜其缘由,整理了一篇关于php上传大文件失败的缘由和解决办法的文章,分享给你们。nginx
下面分别是各类缘由以及解决办法:
第1种状况:文件上传时存放文件的临时目录必须是开启的而且是 PHP 进程全部者用户可写的目录。若是未指定则 PHP 使用系统默认值。
php.ini文件中upload_tmp_dir用来讲明PHP上传的文件放置的临时目录,要想上传文件,得保证服务器没有关闭临时文件并对该文件夹有写入的权限。web
第2种状况:max_execution_time 的值必须足够大。变量 max_execution_time 设置了在强制终止脚本前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,你必须设定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。
上面就是我查到的,由于个人是Windows架构的,因此排除最后一种前面七项我也找了,尝试了,可是发现然并卵,我愁死,甚至都换了一个PHP版本。
可是,可是,可是,就在这里换好PHP和一些配置的环境的时候,涉及到要重启Apache服务器,我就醒悟了,由于php.ini是涉及到Apache服务器的一个配置文件,是否是要重启Apache?,,,怀着一颗忐忑不安的心,重启了服务器,改回了mp3的文件类型,我去年买了个表啊,就是由于Apache服务器没重启致使的php.ini文件没有生效的,唉,因此啊,之后搭建服务器的时候涉及到配置文件的,基本上都要重启。千万别像我同样先换个服务环境。诶。