Php 上传大文件时出现奇怪的问题

Php 上传大文件时出现奇怪的问题,php,file-upload,ini-set,Php,File Upload,Ini Set,我在用PHP上传大文件时遇到了一个奇怪的问题 在php.ini中,max_execution_time设置为30,post_max_size设置为32M,upload_max_filesize设置为32M。当我试图上传一个大小为40.2MB的文件时,它没有显示任何错误。$\u FILES变量的值为数组(0){},$\u FILES['userfile']显示NULL 如果文件大小大于php.ini中设置的值,则应返回错误消息 上传\u ERR\u INI\u大小,值:1;上载的文件超出了php.

我在用PHP上传大文件时遇到了一个奇怪的问题

在php.ini中,
max_execution_time
设置为30,
post_max_size
设置为32M,
upload_max_filesize
设置为32M。当我试图上传一个大小为40.2MB的文件时,它没有显示任何错误。
$\u FILES
变量的值为
数组(0){}
$\u FILES['userfile']
显示
NULL

如果文件大小大于php.ini中设置的值,则应返回错误消息

上传\u ERR\u INI\u大小,值:1;上载的文件超出了php.ini中的upload\u max\u filesize指令

但是它也没有显示任何错误(因为
$\u文件
是一个空数组)。我不知道为什么会这样

当我在php.ini中更改并将post_max_size设置为64M时,
upload_max_filesize
设置为64M,则工作正常。因此,我决定使用以下代码,而不是更改php.ini文件

ini_set('upload_max_filesize', '64M');
ini_set('post_max_size', '64M');
ini_set('max_execution_time', 300);

我甚至试图增加
最大执行时间
。不过,我也有同样的问题
ini\u set()
在此不起作用。

要使40 MB文件因上载错误而失败,必须增加post\u max\u大小,如果超过该变量的值,则会得到一个空的$\u FILES数组。看

如果post数据的大小更大 而不是post_max_size,则$u post和 $\u文件超全局是空的

此外,ini_set()在那里不起作用,因为您试图更改的两个变量是,因此需要在php.ini或.htaccess或httpd.conf中更改。您应该尝试使用40MB文件,例如


您可能还需要查看另一个设置,Apache的
LimitRequestBody

如果文件超过这个值,上传可能会在它到达PHP之前被阻止

ini_set()在此不起作用

除了
max\u execution\u time
之外,您试图用
ini\u set()更改的值不能用
ini\u set()更改
在中,它们被报告为类型
PHP\u INI\u PERDIR
,这意味着(如中所述)它们可以在PHP.INI、.htaccess或httpd.conf中更改。可以使用
ini\u set()
更改的配置设置是服务器上标记为
PHP\u ini\u USER

的配置设置:

在cPanel search for php中,您将在软件下找到“选择php版本”。 软件->选择PHP版本->切换到PHP选项->更改值->保存

本地:

在xampp下的PHP文件夹中找到PHPINI(配置设置)文件。 改变
post\u max\u size=40M
upload\u max\u filesize=40M

我不确定为什么没有引发upload\u ERR\u INI\u size错误,但我可以说,使用INI\u set设置upload\u max\u filesize或post\u max\u size没有任何影响,因为这些无法设置为运行时,根据以下INI列表:最佳答案,除非你不能使用ini_set()设置upload_max_filesize和post_max_size,只能通过.conf或.ini文件。实际上这很愚蠢!wqhat如果我不想让我的网站的访客上传超过2MB(因为他们可以产生洪水),但是如果他们是成员,上传的容量将达到150MB???@Ronan:在这种情况下,你必须创建两个单独的目录,一个用于访客上传,另一个用于成员上传。我想将此标记为已接受的答案,但堆栈溢出只允许将一个答案标记为已接受答案,我已经标记了。@Debiprasad:不可能有两个已接受答案;你应该先取消选择之前选择的答案,然后再选择另一个被接受的答案。这也是一个很好的观点。我从来不知道。谢谢分享。
php_value upload_max_filesize 32M
php_value post_max_size 64M
php_value max_execution_time 300