web-dev-qa-db-fra.com

Réception de 404 lors du téléchargement d'un fichier de plus de 10 Ko

J'ai construit un formulaire de téléchargement de fichier à l'aide du code AJAX qui fonctionne parfaitement sur mon hôte local (xampp/Apache). Je peux télécharger des fichiers aussi grands que 256Mo. Utilisation de HTTP.

Cependant, lorsque je télécharge ce code sur mon serveur nginx sur aws ec2, je reçois un 404 en essayant de télécharger un fichier plus volumineux que 10 Ko (oui, c’est un K). J'utilise HTTPS.

Je pensais que les paramètres de php.ini étaient peut-être incorrects, alors j'ai ajouté ce code au formulaire de téléchargement de fichier.

<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>

Je reçois cette sortie de la console.

Notez le 0 suivi de "succès de téléchargement de fichier". Ici 0 est le code d'erreur de fichier i.e. $_FILES['ninja_file']['error']

Les deux fichiers que j'ai téléchargés dans ce cas étaient 9Ko.

Lorsque vous voyez la Post ... 404 () en bas, cela est dû à mon intention de télécharger un fichier de 22 Ko.

enter image description here

Dans nginx.conf je mets

client_max_body_size 0;

Définir la taille sur 0 désactive la vérification de la taille du corps de la demande du client conformément à la documentation http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size

La technologie:

  • Wordpress 4.7
  • PHP 7.0
  • NGINX 1.10
1
nu everest

Vérifiez le fichier nginx error.log (basé sur l'emplacement de nginx.conf error_log).

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

Il y a une erreur "autorisation refusée" sur /var/lib/nginx. Cela est dû au fait que j'ai modifié le paramètre userdans nginx.conf à partir de

user nginx;

à quelque chose d'autre. Dans ce cas,

user iam;

Solution:

Vérifiez la propriété actuelle de l'utilisateur et du groupe sur/var/lib/nginx.

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

Cela vous indique qu'un utilisateur et un groupe probablement inexistants nommé nginxpossèdent ce dossier. Cela empêche le téléchargement de fichiers.

Changez la propriété du dossier en utilisateur défini dans nginx.conf dans ce cas iam(Sudo n'est peut-être pas requis).

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

Vérifiez que cela a réellement changé.

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

La permission refusée devrait maintenant disparaître. Vérifiez le fichier error.log (basé sur l'emplacement de nginx.conf error_log).

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

Si cela ne fonctionne pas, vous devrez peut-être recharger nginx et php-fpm.

$ Sudo service nginx reload
$ Sudo service php-fpm reload
0
nu everest