今天,遇到这样一个linux共享主机用户,网站后台上传3M的文件失败,原因由于upload_max_filesize限制所致.所以做了以下设置:
在网站程序根目录下,添加php.ini,文件内容如下:
memory_limit = 64M
upload_max_filesize = 20M
post_max_size = 20M
然后在根目录下,创建info.php测试页面.测试页面内容如下:
<?php phpinfo(); ?>
访问测试页面,查询结果,如下:
发现设置均已经生效.
再次测试文件上传,仍然失败,原因还是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配置文件路径.如下:
访问测试页面:
查看到对应服务器php.ini配置文件的路径为/opt/alt/php56/etc/php.ini,编辑该文件,修改upload_max_filesize 与post_max_size 的值为20M即可!
这样,用户的php.ini设置就可以生效了.再次上传20M及以下文件就不会有相应的限制报错了.
