Получение 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 КБ.
В 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
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