Получение 404 при загрузке файла размером более 10 кб


Я создал форму загрузки файлов с использованием кода AJAX, который отлично работает на моем локальном хосте (xampp/apache). Я могу загружать файлы размером до 256 МБ. Используя HTTP.

Однако, когда я загружаю этот код на свой сервер nginx на aws ec2, я получаю 404 при попытке загрузить любой файл размером более 10 КБ (да, это K). Я использую HTTPS.

Я подумал, что, возможно, настройки php.ini были неверными, поэтому я добавил этот код в форму загрузки файла.

<script>
    console.log("max_execution_time = <?php echo(ini_get('max_execution_time')); ?>");
    console.log("max_input_time = <?php echo ini_get('max_input_time'); ?>");
    console.log("memory_limit = <?php echo ini_get('memory_limit'); ?>");
    console.log("post_max_size = <?php echo ini_get('post_max_size'); ?>");
    console.log("file_uploads = <?php echo ini_get('file_uploads'); ?>");
    console.log("upload_max_filesize = <?php echo ini_get('upload_max_filesize'); ?>");
    console.log("max_file_uploads = <?php echo ini_get('max_file_uploads'); ?>");
    console.log("default_socket_timeout = <?php echo ini_get('default_socket_timeout'); ?>");
</script>

Я получаю эту консоль выход.

Обратите внимание на 0, за которым следует "Успешная загрузка файла". Здесь 0 - код ошибки файла, т. е. $_FILES['ninja_file']['error']

Два файла, которые я загрузил в этом случае, были размером 9 КБ.

Когда вы видите Post ... 404 () внизу, это было связано с тем, что я пытался загрузить файл размером 22 КБ.

enter image description here

В nginx.conf я установил

client_max_body_size 0;

Установка размера в 0 отключает проверку размера тела запроса клиента в соответствии с документами http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size

Технология:

  • Wordpress 4.7
  • PHP 7.0
  • NGINX 1.10
Author: nu everest, 2016-12-26

1 answers

Проверьте файл nginx error.log (на основе местоположения nginx.conf error_log).

$ sudo nano /path/to/nginx/error.log

В /var/lib/nginx есть ошибка "отказано в разрешении". Это произошло потому, что я изменил параметр user в файле nginx.conf с

user nginx;

К чему-то другому. В этом случае

user iam;

Решение:

Проверьте текущего пользователя и владельца группы в /var/lib/nginx.

$ ls -ld /var/lib/nginx
drwx------ 3 nginx nginx 4096 Aug  5 00:05 /var/lib/nginx

Это говорит вам о том, что возможно несуществующий пользователь и группа с именем nginx владеют этим папка. Это предотвращает загрузку файлов.

В этом случае измените владельца папки на пользователя, определенного в файле nginx.conf iam (sudo может не потребоваться).

$ sudo chown -Rf iam:iam /var/lib/nginx

Убедитесь, что он действительно изменился.

$ ls -ld /var/lib/nginx
drwx------ 3 iam iam 4096 Aug  5 00:05 /var/lib/nginx

Ошибка "Отказано в разрешении" теперь должна исчезнуть. Проверьте файл error.log (на основе местоположения nginx.conf error_log).

$ sudo nano /path/to/nginx/error.log

Если это не сработает, вам может потребоваться перезагрузить nginx и php-fpm.

$ sudo service nginx reload
$ sudo service php-fpm reload
 0
Author: nu everest, 2016-12-29 22:32:21