我有一个PHP应用程序,我可以上传文件。当我上传大多数文件并执行print_r($_FILES)
时,我会得到类似的结果:
Array
(
[import] => Array
(
[name] => Array
(
[excel_file] => COD MKTG 2.csv
)
[type] => Array
(
[excel_file] => application/vnd.ms-excel
)
[tmp_name] => Array
(
[excel_file] => /tmp/phpy8mEKn
)
[error] => Array
(
[excel_file] => 0
)
[size] => Array
(
[excel_file] => 1584286
)
)
)
我有另一个CSV文件更像是13兆字节,当我尝试上传时,我得到了这个:
Array
(
[import] => Array
(
[name] => Array
(
[excel_file] => COD MKTG.csv
)
[type] => Array
(
[excel_file] =>
)
[tmp_name] => Array
(
[excel_file] =>
)
[error] => Array
(
[excel_file] => 1
)
[size] => Array
(
[excel_file] => 0
)
)
)
我没有得到任何错误,说文件太大了。我只是感到格格不入$_FILES
。我将php.ini中的post_max_size
设置为100MB。为什么会这样?
答案 0 :(得分:13)
根据PHP文档,错误代码1为UPLOAD_ERR_INI_SIZE:“上传的文件超出了php.ini中的upload_max_filesize指令”
您需要确保正确设置以下所有变量:
upload_max_filesize - 上传中任何单个文件的最大尺寸
max_file_uploads - 允许上传的文件总数
post_max_size - 所有被发布数据的总和(表单数据+文件)
memory_limit - 必须是> post_max_size,允许PHP +脚本开销的空间
除此之外,还有网络服务器限制。 Apache有LimitRequestBody,它会在PHP进入图片之前很久就会应用。
答案 1 :(得分:1)
改变内存限制 memory_limit = 8M;
大概20?
也许是执行时间
的max_execution_time
编辑:
确保没有执行时间查找...
如果您的互联网连接非常慢,则可能是
max_input_time设置
它必须是其中之一或您的脚本有问题 或者你没有正确设置
memory_limit的
的max_execution_time
max_input_time设置
答案 2 :(得分:0)
您也可以尝试在根目录中的.htaccess文件中设置这些值
php_value upload_max_filesize 128M
php_value post_max_size 128M
php_value max_execution_time 200
php_value max_input_time 200
答案 3 :(得分:0)
据我所知,PHP在文件系统功能方面存在大文件问题。 32位编译的PHP有2147483647作为PHP_INT_MAX,这意味着大于〜2G的文件将无法打开,搜索等。这个数字在64位编译的PHP中更大[大约4万亿字节 - 8字节有符号整数]
此时此刻,我正在尝试解决此问题[我正在尝试将JumpLoader集成到我的CMS项目中。它完成了,除了与这个2G倾覆问题相关的部分 - 不能对大于2G的文件起作用。],所以一旦我得到一个解决方案,就会分享它。
现在祝你好运。