Я пытался обнаружить проблему на своем веб-сервере, которая просто приводит к сбою загрузки файлов. Я также создал простой скрипт php для проверки загрузки, и при загрузке он не выполняется, но я не получаю никаких сообщений об ошибках сортировки или сообщениях журнала. Файл, который я тестировал, имеет 86 МБ, я уже увеличил следующие настройки php, связанные с загрузкой и перезапустил apache:
memory_limit 1024MB
post_max_size 512MB
upload_max_filesize 256MB
Независимо от внесенных мной изменений, проблема сохраняется, загрузка работает только для небольших файлов. Я использую php7.3, apache 2.4.39 и CentOS 7.6.
Другой тест, который я сделал, менял upload_tmp_dir
в пользовательскую папку, и я смог проверить, создается ли временный файл во время загрузки файла, пока он каким-то образом не выйдет из строя и файл не будет удален. Также попытался отключить SELinux, но результат был таким же.
Проблема была вызвана reqtimeout_module
, добавив следующий код в /etc/httpd/conf/httpd.conf
решить проблему.
<IfModule reqtimeout_module>
RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500
</IfModule>
Проверьте конфигурацию Apache на наличие директивы LimitRequestBody
. По умолчанию это 0, что позволяет загружать неограниченные размеры, но это может быть изменено. Ограничения на размер загрузки должны быть достаточными для конфигураций Apache и PHP.