php上传大文件所涉及upload_max_filesize和post_max_size两个选项的修改

今天,遇到这样一个linux共享主机用户,网站后台上传3M的文件失败,原因由于upload_max_filesize限制所致.所以做了以下设置:

在网站程序根目录下,添加php.ini,文件内容如下:

memory_limit = 64M

upload_max_filesize = 20M

post_max_size = 20M

然后在根目录下,创建info.php测试页面.测试页面内容如下:

<?php phpinfo(); ?>

访问测试页面,查询结果,如下:

图片1

发现设置均已经生效.

再次测试文件上传,仍然失败,原因还是upload_max_filesize限制所致.

 

在处理问题之前,我们先了解下php.ini中这几个核心配置的说明:

upload_max_filesize  所上传文件的最大大小;

post_max_size       设定POST数据所允许的最大大小;

memory_limit       设定了一个脚本所能申请到的最大内存;

max_execution_time  每个脚本最大执行时间,单位秒;

 

一般情况下,需设置memory_limit  >  post_max_size  >  upload_max_filesize .

php.ini配置文件中,默认upload_max_filesize = 2M,post_max_size = 8M,memory_limit = 32M,max_execution_time = 30 ;

若你想上传一个20M的文件,你必须设定upload_max_filesize = 20M;如果POST数据超出限制,那么$_POST和$_FILES(PHP全局变量)将会为空,所以需要设定post_max_size值大于upload_max_filesize的值.但往往我们只要设置post_max_size等于upload_max_filesize值即可!

在上传文件时,若超过一定时间,则会报脚本执行超过30秒的错误.这是php.ini配置文件中max_execution_time设置作怪.其中”0”表示没有限制,但不推荐设置为0,可以根据上传文件适当调整max_execution_time的值.

一般情况,服务器的php.ini配置文件中的memory_limit与max_execution_time默认设置不生效的,你可以通过php.ini做相应的调整.

 

在回到上面这个问题上,客户php.ini 配置并没有错误,只是因服务器限制所导致.这里只需要服务器的相应设置调整一下即可!(这里需要联系服务器管理员)

如下:查看共享主机用户应用的PHP版本,以此来查看对应服务器php.ini配置文件路径.如下:

访问测试页面:

图片2

查看到对应服务器php.ini配置文件的路径为/opt/alt/php56/etc/php.ini,编辑该文件,修改upload_max_filesize 与post_max_size 的值为20M即可!

这样,用户的php.ini设置就可以生效了.再次上传20M及以下文件就不会有相应的限制报错了.