Maison  >  Article  >  développement back-end  >  Comment définir la taille de l'image de téléchargement en php

Comment définir la taille de l'image de téléchargement en php

藏色散人
藏色散人original
2021-09-24 10:02:294515parcourir

Comment définir la taille des images téléchargées en php : 1. Ouvrez le fichier "php.conf" ; 2. Définissez "ini_set('max_input_time','90');"; , '12M' );" C'est tout.

Comment définir la taille de l'image de téléchargement en php

L'environnement d'exploitation de cet article : système linux5.9.8, PHP version 7.1, ordinateur Dell G3.

Comment définir la taille de l'image téléchargée en php ?

Comment définir la taille de téléchargement du fichier image en PHP

La limite de téléchargement par défaut de PHP est de 2 Mo maximum. Si vous souhaitez télécharger des fichiers dépassant ce paramètre, vous devez ajuster certains paramètres de PHP, Apache, etc.

Ci-dessous, nous présentons brièvement quelques paramètres impliqués dans le téléchargement de fichiers PHP :

file_uploads : s'il faut autoriser le téléchargement de fichiers via le commutateur HTTP, la valeur par défaut est ON.

upload_tmp_dir : upload_tmp_dir est utilisé pour décrire le répertoire temporaire dans lequel les fichiers téléchargés par PHP sont placés. Si vous souhaitez télécharger des fichiers, vous devez vous assurer que le serveur ne ferme pas les fichiers temporaires et dispose d'une autorisation en écriture sur le dossier. , PHP utilise la valeur par défaut du système.

upload_max_filesize : taille maximale autorisée du fichier de téléchargement, la valeur par défaut est de 2 Mo.

post_max_size : contrôle la quantité maximale de données que PHP peut recevoir lors de la soumission d'un formulaire à l'aide de la méthode POST. Si vous souhaitez utiliser la fonction de téléchargement de fichiers PHP, vous devez modifier cette valeur pour qu'elle soit supérieure à upload_max_filesize.

max_input_time : limitez le temps de réception des données via POST, GET et PUT en secondes. Si votre application s'exécute sur une liaison lente, vous devrez peut-être augmenter cette valeur pour tenir compte du temps supplémentaire requis pour recevoir les données.

memory_limit : 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 de manière appropriée supérieure à la valeur de post_max_size.

max_execution_time : max_execution_time définit le temps pendant lequel PHP attend la fin du script avant de forcer la fin du script. Ce temps est calculé en secondes. 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 pendant qu'il exécute un processus important.

Pour les hôtes Linux, il peut y avoir un fichier php.conf sous /etc/httpd/conf.d/access.conf/. Ce fichier peut résoudre le problème de limite de taille de fichier de certains systèmes.

Ajoutez le code suivant au téléchargement PHP pour permettre temporairement à PHP de télécharger des fichiers volumineux, comme suit :

<?php  
//HTTP上传文件的开关,默认为ON即是开  
ini_set(&#39;file_uploads&#39;,&#39;ON&#39;);
//通过POST、GET以及PUT方式接收数据时间进行限制为90秒 默认值:60  
ini_set(&#39;max_input_time&#39;,&#39;90&#39;);
//脚本执行时间就由默认的30秒变为180秒  
ini_set(&#39;max_execution_time&#39;, &#39;180&#39;);
//Post变量由2M修改为8M,此值改为比upload_max_filesize要大  
ini_set(&#39;post_max_size&#39;, &#39;12M&#39;);
//上传文件修改也为8M,和上面这个有点关系,大小不等的关系。
ini_set(&#39;upload_max_filesize&#39;,&#39;10M&#39;);  
//正在运行的脚本大量使用系统可用内存,上传图片给多点,最好比post_max_size大1.5倍  
ini_set(&#39;memory_limit&#39;,&#39;20M&#39;);
?>

Vérifiez si les variables ci-dessus sont modifiées avec succès :

<?php  
echo ini_get(&#39;file_uploads&#39;)."\n";   
echo ini_get(&#39;max_input_time&#39;)."\n";   
echo ini_get(&#39;max_execution_time&#39;)."\n";   
echo ini_get(&#39;post_max_size&#39;)."\n";   
echo ini_get(&#39;upload_max_filesize&#39;)."\n";   
echo ini_get(&#39;memory_limit&#39;)."\n";   
?>

Modifier dans php.ini, impliquant la relation de contrainte de taille de trois valeurs . Il s'agit donc d'une solution temporaire. La raison pour laquelle cela ne peut pas être modifié a beaucoup à voir avec le mode de fonctionnement de PHP, comme le mode sans échec.

Les instructions ini_set ne peuvent pas être utilisées en mode sans échec : max_execution_time, memory_limit, child_terminate.

Par conséquent, des éléments comme post_max_size et upload_max_filesize ne peuvent pas être modifiés en utilisant la méthode suivante :

ini_set(&#39;post_max_size&#39;,&#39;10M&#39;); 
ini_set(&#39;upload_max_filesize&#39;,&#39;8M&#39;);

La méthode correcte est d'utiliser le fichier .htaccess :

php_value upload_max_filesize 8M 
php_value post_max_size 10M

Le principe est que le site est configuré dans httpd.conf : AllowOverride All.

Il est indiqué dans la documentation php que la plage modifiable de upload_max_filesize est PHP_INI_PERDIR. PHP_INI_PERDIR signifie que la directive de domaine peut être modifiée dans le fichier php.ini, httpd.conf ou .htaccess. La directive de domaine PHP_INI_SYSTEM peut être modifiée dans les fichiers php.ini et httpd.conf. Par conséquent, upload_max_filesize ne peut pas être modifié à l'aide de int_set. Seule la plage modifiable est PHP_INI_ALL pouvant être modifiée avec int_set.

Comment obtenir la valeur :

if(@ini_get("file_uploads")) {
	$arrInfo[&#39;fileupload&#39;] = "允许 - 文件 ".ini_get("upload_max_filesize")." - 表单:".ini_get("post_max_size");
} 
else {
	$arrInfo[&#39;fileupload&#39;] = "<font color=&#39;red&#39;>禁止</font>";
}
if (get_cfg_var(&#39;register_globals&#39;)){
	$arrInfo[&#39;onoff&#39;] ="打开";
}else{
	$arrInfo[&#39;onoff&#39;] = "关闭";
}

Apprentissage recommandé : "Tutoriel vidéo PHP"

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn