Maison >développement back-end >tutoriel php >Que dois-je faire si le téléchargement de fichiers volumineux PHP échoue ?
Pourquoi le téléchargement de gros fichiers échoue-t-il toujours, mais il n'y a aucun problème lors du téléchargement de petits fichiers. Les raisons et les solutions à l'échec du téléchargement de fichiers volumineux PHP sont les suivantes :
Cas 1 : Le répertoire temporaire dans lequel le fichier est stocké pendant le téléchargement de fichiers doit être ouvert et accessible en écriture par l'utilisateur propriétaire du processus PHP. Si rien n'est spécifié, PHP utilise la valeur par défaut du système.
Upload_tmp_dir dans le fichier php.ini est utilisé pour décrire le répertoire temporaire dans lequel sont placés les fichiers téléchargés par PHP. Si vous souhaitez télécharger des fichiers, vous devez vous assurer que le serveur n'a pas fermé le fichier temporaire et dispose de l'autorisation d'écriture sur le fichier. dossier.
Cas 2 : La valeur de max_execution_time doit être suffisamment grande. La variable max_execution_time définit le temps, mesuré en secondes, pendant lequel PHP attend la fin du script avant de le terminer de force. Cette variable est utile lorsque le script entre dans une boucle infinie. Cependant, cette fonctionnalité peut également provoquer l'échec de l'opération lorsqu'il existe une activité légitime qui prend beaucoup de temps (telle que le téléchargement d'un fichier volumineux). Dans de tels cas, vous devez envisager d'augmenter la valeur de cette variable pour empêcher PHP d'arrêter le script lorsque le script exécute certains processus importants, comme la définir sur 90 secondes, max_execution_time = 90.
Remarque : il existe également une fonction set_time_limit dans la fonction php, qui a le même effet que le paramètre ci-dessus. La différence entre les deux est que ce qui précède est défini dans le fichier php.ini, tandis que set_time_limit est écrit dans le fichier. fichier php de. Par conséquent, vous pouvez également définir la durée d'exécution maximale du programme en utilisant set_time_limit sur la page. Par exemple, durée illimitée : set_time_limit(0);
Cas 3 : file_uploads = On, ce qui signifie qu'il est autorisé à transmettre le téléchargement de fichiers HTTP, cette option ne peut pas être définie sur OFF.
Cas 4 : upload_max_filesize = 2M définit la taille maximale de téléchargement de fichier. La taille de téléchargement de fichier par défaut dans le fichier de configuration php.ini est de 2 M. Une erreur que font souvent les débutants en PHP est d'écrire des fichiers. vous définissez la zone de formulaire pour la taille maximale du fichier téléchargé, c'est-à-dire la valeur maximale du fichier pouvant être téléchargé, et la valeur de max_file_size (champ de valeur cachée) pour spécifier la taille du fichier téléchargé. généralement, d'autres peuvent contourner cette valeur, donc pour des raisons de sécurité, il est préférable de configurer l'option upload_max_filesize dans le fichier de configuration php.ini pour définir la taille du téléchargement du fichier. La valeur par défaut upload_max_filesize = 2M, c'est-à-dire que la taille de téléchargement du fichier est de 2M. Si vous souhaitez télécharger des fichiers dépassant 8M, par exemple 20M, vous devez définir upload_max_filesize = 20M.
Cas 5 : post_max_size Cette valeur doit également être suffisamment grande. Cette variable est également une variable liée à la soumission du formulaire. Elle limite la quantité maximale de données que le programme PHP peut recevoir lorsque le client soumet un formulaire via la méthode POST. En général, cette valeur peut être légèrement supérieure à upload_max_filesize. Par exemple, si vous souhaitez télécharger un fichier de 20 Mo, cette valeur peut être définie sur 21 Mo.
Cas 6 : max_input_time Cette variable peut limiter le temps de réception des données via POST, GET et PUT en secondes. Si l'application s'exécute dans un environnement avec un réseau lent, vous devez augmenter cette valeur pour augmenter le temps requis pour recevoir les données, par exemple, définissez cette valeur sur 90 secondes.
max_input_time = 90
Cas 7 : memory_limit doit également être suffisamment grand. Afin d'éviter que l'exécution de scripts n'utilise une grande quantité de mémoire système disponible, PHP permet de définir des limites d'utilisation de la mémoire. Utilisez la variable memory_limit pour spécifier la capacité de mémoire maximale qu'un seul script peut utiliser. La valeur de la variable memory_limit doit être correctement supérieure à la valeur de post_max_size.
Scénario 8 : De plus, si votre hôte est un système d'exploitation nginx, si les opérations ci-dessus échouent, pensez à ajouter client_max_body_size 20m dans le fichier de configuration nginx ; cette phrase signifie que le téléchargement maximum autorisé est de 20 Mo, selon sur votre propre situation. L'emplacement de mon fichier de configuration nginx est /usr/local/nginx/conf/nginx.conf.
J'espère que cet article pourra vous fournir quelques idées pour mieux résoudre des problèmes similaires.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!