Загрузка файла jQuery / PHP возобновляется на 99%, а затем возвращается время ожидания - PullRequest
0 голосов
/ 02 июля 2019

У меня возникли некоторые проблемы с загрузкой файлов jQuery / PHP на моем AMI Linux, работающем на экземпляре EC2.Я попытался использовать this и пару других плагинов (просто чтобы убедиться, что проблема не с самим плагином), с теми же результатами.При попытке загрузить 14 МБ PDF индикатор выполнения достигает 75% (или более, до 99%), затем перезапускается с 0%, снова достигает 75% (или более, до 99%), а затем просто останавливается сбез ошибок (даже не говоря Request Timeout).Сделав несколько попыток, только пару раз индикатор выполнения достиг 99% без перезапуска, а затем выскочила ошибка с сообщением Request Timeout.Это то, что я нашел в apache access_log:

12.34.56.78 - - [02 / Jul / 2019: 15: 50: 09 +0000] "POST / uploader / demo / backend / upload.php HTTP / 1.1 "408 221

12.34.56.78 - - [02 / Jul / 2019: 15: 50: 31 +0000]" POST /uploader/demo/backend/upload.php HTTP / 1.1 "408 221

Таким образом, он печатает 408 Request Timeout в 2 строки (в действительности загрузка перезапускается один раз).Загрузка занимает 22 или 23 секунды (как видно из журналов).

Вот как я устанавливаю php.ini (я использую PHP 7.1 FPM):

max_execution_time = 360
max_input_time = 360
memory_limit = 256M
post_max_size = 100M
upload_max_filesize = 100M

phpinfo() показывает, что эти значения применяются правильно.Я также попытался использовать set_time_limit(0) и установить все указанные выше значения в файле upload.php с помощью ini_set(), но ничего не изменилось.Каталог загрузки имеет соответствующие разрешения, в действительности файл PDF объемом 9,3 МБ загружен правильно, без ошибок.

В одной из своих попыток я попытался также установить эти директивы apache:

KeepAlive On
KeepAliveTimeout 360
TimeOut 360

Только сВ результате прогресс загрузки достигал 99% и перезапускался несколько раз, а не перезапускался только один раз.

Теперь у меня закончились идеи, и большинство предлагаемых решений связаны с настройками php.ini, которые в моем случае применяются правильно.

1 Ответ

0 голосов
/ 02 июля 2019

После нескольких часов попыток, как только я опубликовал свой вопрос, я нашел ответ. Это может быть полезно для тех, у кого такая же проблема. Если все остальное, перечисленное в моем вопросе, не работает, это может быть связано с mod_reqtimeout (как это было для меня). Я просто создал файл с именем: /etc/httpd/conf.d/mod_reqtimeout.conf и поместите это внутри него:

<IfModule reqtimeout_module>
  RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500
</IfModule>

как предложено в документе Apache, указанном выше. Затем я перезапустил apache и загрузка достигла 100% без проблем.

Также mod_security принимал участие в этом, когда я пытался с 60 МБ PDF. Я должен был установить следующую настройку, чтобы соответствовать пределу в 100 МБ, который был установлен в php.ini, внутри /etc/httpd/conf.d/mod_security.conf:

SecRequestBodyLimit 100000000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...