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

我在PHP中上传大文件时遇到了一个奇怪的问题。 在php.ini中,
max_execution_time
设置为30,
post_max_size
设置为32M,
upload_max_filesize
设置为32M。当我尝试上传大小为40.2 MB的文件时,它不会显示任何错误。
$_FILES
变量的值为
array(0) { }
$_FILES['userfile']
的值为
NULL
。 如果文件大小超过php.ini中设置的值,则应返回错误消息   UPLOAD_ERR_INI_SIZE,值:1;上传的文件超过了php.ini中的upload_max_filesize指令。 但它也没有显示任何错误(因为
$_FILES
是一个空数组)。我不知道为什么会发生这种情况。 当我更改php.ini并将set_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);
我甚至试图增加
max_execution_time
。不过,我遇到了同样的问题。
ini_set()
不在这里工作。     
已邀请:
要使40 MB文件因上传错误而失败,您必须增加post_max_size,如果超过该变量的值,则会得到一个空的$ _FILES数组。请参阅手册   如果发布数据的大小更大   比post_max_size,$ _POST和   $ _FILES superglobals是空的。 此外,ini_set()不能在那里工作,因为您尝试更改的两个变量是PHP_INI_PERDIR,因此需要在php.ini或.htaccess或httpd.conf中进行更改。您应该尝试使用例如.htaccess中的这些设置的40MB文件
php_value upload_max_filesize 32M
php_value post_max_size 64M
php_value max_execution_time 300
    
还有一个你可能需要看的设置,Apache的
LimitRequestBody
。 如果文件超过该值,则上传可能会在到达PHP之前被阻止。 Apache文档     
  ini_set()在这里不起作用。 除forѭ以外,您尝试使用
ini_set()
更改的值不能使用
ini_set()
更改。 在php.ini指令列表中,它们被报告为类型
PHP_INI_PERDIR
,这意味着(如可以设置配置设置中所述)可以在php.ini,.htaccess或httpd.conf中更改它们。可以使用
ini_set()
更改的配置设置是标记为
PHP_INI_USER
的设置。     
对于服务器: 在cPanel中搜索php,你会在Software下找到“Select PHP version”。 软件 - >选择PHP版本 - >切换到Php选项 - >更改值 - >保存。 对于本地: 在xampp下的php文件夹中找到PHP ini(配置设置)文件。 更改
post_max_size = 40M
upload_max_filesize = 40M
    

要回复问题请先登录注册