Я посылаю через ajax объект FormData, содержащий загружаемые файлы, но когда я пытаюсь загрузить большие файлы (> 5M), я получаю пустые переменные $ _POST и $ _FILES.
Читая столько постов об этой проблеме, я применил почти все, но не сработало.
I've tried on php.ini:
- max_execution_time = 300
- max_input_time = 300
- post_max_size = 2048M (large but compulsory)
- upload_max_filesize = 2048M (large but compulsory)
- max_input_vars = 2000 (trying different values)
On HTTP/HTTPS directives (some have no sense but I was trying in a desperately way to see the behaviour):
- FcgidConnectTimeout 300
- FcgidIOTimeout 300
- FcgidIdleTimeout 300
- FcgidBusyTimeout 300
- IPCCommTimeout 9999
- FcgidMaxRequestLen 21474836480
Мой код выглядит следующим образом:
var form = $('form[name="myform"]');
var formData = new FormData(form[0]);
/*
Also tried this:
var file = $("form[name='myform'] input[name='filename']");
formData.append("my_upload", (file[0]).files[0]);
*/
$.ajax({
type: 'post',
data: formData,
dataType: 'json',
async: true,
url: '/mysite/controllers/Controller.php',
processData: false,
contentType: false,
...
});
Итак, для файлов <5M все отлично работает как на моем локальном сервере, так и на рабочем сервере. Для файлов> 5M работает только на моем локальном сервере, но не на рабочем сервере (где я получаю пустые переменные $ _POST и $ _FILES). Обычно они имеют конфигурацию некоторых переменных, хотя рабочий сервер находится под WAF на CloudFlare.