У меня есть приложение 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
. У меня есть post_max_size
в php.ini, установленном на 100 МБ. Почему это происходит?
В соответствии с документами PHP код ошибки 1 – UPLOAD_ERR_INI_SIZE : «Загруженный файл превышает директиву upload_max_filesize в php.ini»
Вы должны убедиться, что все следующие переменные правильно установлены:
upload_max_filesize – максимальный размер любого отдельного файла при загрузке
max_file_uploads – общее количество файлов, разрешенных для загрузки
post_max_size – общая сумма всех данных POSTED (данные формы + файлы)
memory_limit – должно быть> post_max_size, чтобы позволить пространство для накладных расходов PHP +
И, кроме того, существуют ограничения на веб-сервер. Apache получил LimitRequestBody, который будет применяться задолго до того, как PHP когда-нибудь войдет в картину.
измените предел памяти, а memory_limit = 8M;
до 20?
и, возможно, время выполнения
max_execution_time
редактировать:
убедитесь, что это не время выполнения поиска …
если у вас действительно медленное подключение к Интернету, это может быть
max_input_time
это должно быть одно из них или что-то не так с вашим сценарием или вы не правильно настроили настройки
memory_limit
max_execution_time
max_input_time
Вы также можете попробовать установить эти значения в файле .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
Насколько мне известно, у PHP возникают проблемы с большими файлами, когда речь идет о функциях файловой системы. 32-разрядный скомпилированный PHP имеет 2147483647 как PHP_INT_MAX, что означает, что файлы размером более ~ 2G не будут открываться, искать и т. Д. Это число больше в 64-битном скомпилированном PHP [около 4+ триллионов байтов – 8-байтовое целое число со знаком] ,
В этот самый момент я пытаюсь решить эту проблему [я пытаюсь интегрировать JumpLoader в мой проект CMS. Это делается, за исключением части, связанной с этой проблемой 2G опрокидывания – не может работать с файлами размером более 2G.], Поэтому, как только я получу решение на этом, вы поделитесь им.
Удачи на данный момент.