【发布时间】:2011-04-02 08:58:17
【问题描述】:
我在用 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 并将 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);
我什至尝试增加max_execution_time。不过,我有同样的问题。 ini_set() 在这里不工作。
【问题讨论】:
-
我不确定为什么没有引发 UPLOAD_ERR_INI_SIZE 错误,但我可以说使用 ini_set 设置 upload_max_filesize 或 post_max_size 没有影响,因为根据此 ini 列表,这些无法设置运行时: php.net/manual/en/ini.list.php
标签: php file-upload ini-set