Heim >Backend-Entwicklung >PHP-Problem >So legen Sie die Upload-Bildgröße in PHP fest
So legen Sie die Upload-Bildgröße in PHP fest: 1. Öffnen Sie die Datei „php.conf“. 2. Legen Sie „ini_set(‘max_input_time‘,‘90‘);“ fest. '12M' );" Das ist es.
Die Betriebsumgebung dieses Artikels: Linux5.9.8-System, PHP-Version 7.1, Dell G3-Computer.
Wie stelle ich die Upload-Bildgröße in PHP ein?
So legen Sie die Upload-Größe für Bilddateien in PHP fest
PHPs Standard-Upload-Limit beträgt maximal 2 MB. Wenn Sie Dateien hochladen möchten, die diese Einstellung überschreiten, müssen Sie einige Parameter von PHP, Apache usw. anpassen.
Im Folgenden stellen wir kurz einige Parameter vor, die beim Hochladen von PHP-Dateien eine Rolle spielen:
file_uploads: Gibt an, ob das Hochladen von Dateien über den HTTP-Schalter zugelassen werden soll. Die Standardeinstellung ist EIN.
upload_tmp_dir: upload_tmp_dir wird verwendet, um das temporäre Verzeichnis zu beschreiben, in dem von PHP hochgeladene Dateien abgelegt werden. Wenn Sie Dateien hochladen möchten, müssen Sie sicherstellen, dass der Server die temporären Dateien nicht schließt und über Schreibberechtigung für den Ordner verfügt , PHP verwendet den Systemstandardwert.
upload_max_filesize: Die maximal zulässige Upload-Dateigröße, der Standardwert ist 2 MB.
post_max_size: Steuert die maximale Datenmenge, die PHP während einer Formularübermittlung mithilfe der POST-Methode empfangen kann. Wenn Sie die Funktion zum Hochladen von PHP-Dateien verwenden möchten, müssen Sie diesen Wert so ändern, dass er größer als upload_max_filesize ist.
max_input_time: Begrenzen Sie die Zeit in Sekunden für den Datenempfang über die Methoden POST, GET und PUT. Wenn Ihre Anwendung über eine langsame Verbindung ausgeführt wird, müssen Sie diesen Wert möglicherweise erhöhen, um die zusätzliche Zeit zu berücksichtigen, die zum Empfangen von Daten erforderlich ist.
memory_limit: Um zu vermeiden, dass die Ausführung von Skripten eine große Menge des verfügbaren Systemspeichers beansprucht, ermöglicht PHP die Definition von Speichernutzungsgrenzen. Verwenden Sie die Variable „memory_limit“, um die maximale Speicherkapazität anzugeben, die ein einzelnes Skript verwenden kann. Der Wert der Variablen „memory_limit“ sollte entsprechend größer sein als der Wert von „post_max_size“.
max_execution_time: max_execution_time legt die Zeit fest, die PHP auf den Abschluss des Skripts wartet, bevor es zwangsweise beendet wird. Diese Zeit wird in Sekunden berechnet. Diese Variable ist nützlich, wenn das Skript in eine Endlosschleife eintritt. Diese Funktion kann jedoch auch dazu führen, dass der Vorgang fehlschlägt, wenn eine legitime Aktivität vorliegt, deren Abschluss lange dauert (z. B. das Hochladen einer großen Datei). In solchen Fällen müssen Sie erwägen, den Wert dieser Variablen zu erhöhen, um zu verhindern, dass PHP das Skript beendet, während es einen wichtigen Prozess ausführt.
Für Linux-Hosts gibt es möglicherweise eine php.conf-Datei unter /etc/httpd/conf.d/access.conf/. Diese Datei kann das Problem der Dateigrößenbeschränkung einiger Systeme lösen.
Fügen Sie den folgenden Code zum PHP-Upload hinzu, um PHP vorübergehend das Hochladen großer Dateien zu ermöglichen, wie folgt:
<?php //HTTP上传文件的开关,默认为ON即是开 ini_set('file_uploads','ON'); //通过POST、GET以及PUT方式接收数据时间进行限制为90秒 默认值:60 ini_set('max_input_time','90'); //脚本执行时间就由默认的30秒变为180秒 ini_set('max_execution_time', '180'); //Post变量由2M修改为8M,此值改为比upload_max_filesize要大 ini_set('post_max_size', '12M'); //上传文件修改也为8M,和上面这个有点关系,大小不等的关系。 ini_set('upload_max_filesize','10M'); //正在运行的脚本大量使用系统可用内存,上传图片给多点,最好比post_max_size大1.5倍 ini_set('memory_limit','20M'); ?>
Überprüfen Sie, ob die oben genannten Variablen erfolgreich geändert wurden:
<?php echo ini_get('file_uploads')."\n"; echo ini_get('max_input_time')."\n"; echo ini_get('max_execution_time')."\n"; echo ini_get('post_max_size')."\n"; echo ini_get('upload_max_filesize')."\n"; echo ini_get('memory_limit')."\n"; ?>
Ändern Sie in php.ini, wobei die Größen der drei Werte die Beziehung einschränken . Es handelt sich also um eine vorübergehende Lösung. Warum dies nicht geändert werden kann, hat viel mit der Betriebsart von PHP zu tun, beispielsweise mit dem abgesicherten Modus.
Die ini_set-Anweisungen können nicht im abgesicherten Modus verwendet werden: max_execution_time, memory_limit, child_terminate.
Daher können Dinge wie post_max_size und upload_max_filesize nicht mit der folgenden Methode geändert werden:
ini_set('post_max_size','10M'); ini_set('upload_max_filesize','8M');
Der richtige Weg ist die Verwendung der .htaccess-Datei:
php_value upload_max_filesize 8M php_value post_max_size 10M
Die Voraussetzung ist, dass die Site in httpd.conf konfiguriert ist: AllowOverride All.
In der PHP-Dokumentation wird angegeben, dass der veränderbare Bereich von upload_max_filesize PHP_INI_PERDIR ist. PHP_INI_PERDIR bedeutet, dass die Domänendirektive in der Datei php.ini, httpd.conf oder .htaccess geändert werden kann. Die Domänenanweisung PHP_INI_SYSTEM kann in den Dateien php.ini und httpd.conf geändert werden. Daher kann upload_max_filesize nicht mit int_set geändert werden. Nur der veränderbare Bereich ist PHP_INI_ALL und kann mit int_set geändert werden.
So erhalten Sie den Wert:
if(@ini_get("file_uploads")) { $arrInfo['fileupload'] = "允许 - 文件 ".ini_get("upload_max_filesize")." - 表单:".ini_get("post_max_size"); } else { $arrInfo['fileupload'] = "<font color='red'>禁止</font>"; } if (get_cfg_var('register_globals')){ $arrInfo['onoff'] ="打开"; }else{ $arrInfo['onoff'] = "关闭"; }
Empfohlenes Lernen: „PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonSo legen Sie die Upload-Bildgröße in PHP fest. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!