Upload_max_filesize in PHP ändern

82

Ich verwende PHP 5.3.0 und bin auf etwas gestoßen, das ein Fehler sein könnte (in diesem Fall werde ich es melden) oder ich selbst - also bitte ich darum, dies sicherzustellen.

Wenn Sie diesen Code ausführen:

<?php
ini_set('upload_max_filesize', '10M');
echo ini_get('upload_max_filesize'), ", " , ini_get('post_max_size')

Am Ende habe ich:

2M, 8M

Dies ist trotz meiner php.ini Einstellung dieser höher:

upload_max_filesize = 10M
post_max_size = 10M

(nur einmal vorkommend)

Da der Fehler sowohl nach dem Festlegen des Werts als auch nach dem Festlegen in der php.ini auftritt, neige ich dazu, zu glauben, dass es sich um einen Fehler handelt. Kann mir jemand bestätigen oder zeigen, wo ich falsch liege?

Update : Es sieht so aus, als ob ein Neustart von Apache dieses Problem behoben hat. Ich dachte immer, dass es nicht neu gestartet werden muss, wenn Sie die php.ini geändert haben.

Ross
quelle
8
"Ich habe immer gedacht, dass es nicht neu gestartet werden muss, wenn Sie php.ini geändert haben." Die PHP-CLI nimmt Änderungen sofort auf, da sie die php.ini bei jedem Aufruf analysiert. mod_php analysiert php.ini einmal - wenn Apache startet.
Frank Farmer
Ich hatte kürzlich das gleiche Problem. upload_max_filesize würde ohne einen Neustart von Apache nicht wirksam. Ich bin auf einem PHP 5.2.9. Nach dem Neustart funktioniert alles in Ordnung.
Haluk
Um einen vollständigen Neustart von Apache zu vermeiden, verwenden Sie einfach "sudo service apache2
reload

Antworten:

68

Sie können die Kurzschreibweise nicht verwenden , um Konfigurationswerte außerhalb von PHP.ini festzulegen. Ich gehe davon aus, dass es auf 2 MB als kompilierten Standard zurückfällt, wenn es mit einem schlechten Wert konfrontiert wird.

Andererseits glaube ich nicht, dass upload_max_filesizemit eingestellt werden könnte ini_set(). Die "offizielle" Liste gibt an, dass dies der Fall ist PHP_INI_PERDIR.

rauben
quelle
10
Du denkst richtig! Sie können upload_max_filesize nicht mit ini_set () festlegen, da upload_max_filesize ein PHP_INI_PERDIR-Typ ist, der nur über Folgendes geändert werden kann: php.ini, .htaccess oder httpd.conf, wie unter: php.net/manual/en/configuration.changes.modes angegeben. PHP
Marco Demaio
2
Tatsächlich können Sie die Kurzschreibweise außerhalb von PHP.ini verwenden. Sie können es in .htaccessund auch mit verwenden ini_set. Vielleicht aber nicht in allen Versionen.
Beschützer ein
70

Verwenden Sie einen Shared Hosting-Anbieter? Es können Master-Einstellungen sein, die alles überschreiben, was Sie ändern möchten. Haben Sie versucht, diese zu Ihrem .htaccess hinzuzufügen?

php_value upload_max_filesize 10M
php_value post_max_size 10M
karim79
quelle
1
Nein, dies ist meine eigene Apache / PHP-Instanz auf meinem Computer (Windows, falls relevant). Ich werde versuchen, diese zur Apache-Konfiguration hinzuzufügen.
Ross
5
Update: Dies wirkt sich darauf aus (ändert sie in 10), sodass diese Methode funktioniert. Ich bin immer noch ziemlich verwirrt darüber, warum es nicht in php.ini funktioniert oder ini_set verwendet.
Ross
+1 Dies ist definitiv der richtige Weg, wenn Sie nicht zu php.ini gelangen können - vielen Dank.
Alex Coplan
3
Beachten Sie, dass dies nur mit Apache funktioniert, auf dem PHP als Modul ausgeführt wird, nicht als CGI
ChrisV
Ich würde sagen, dies ist die bevorzugte Methode, auch wenn auf die php.iniDatei zugegriffen wird. Ermöglicht das Festlegen dieser Berechtigungen nach Bedarf und nicht als globale Einstellung.
Bryant Jackson
40

Da ich gerade auf einem gemeinsam genutzten Host auf dieses Problem gestoßen bin und die Werte nicht zu meiner .htaccess-Datei hinzufügen konnte, dachte ich, ich würde meine Lösung freigeben.

Ich habe eine INI-Datei mit den darin enthaltenen Werten erstellt. So einfach ist das:

Erstellen Sie eine Datei mit dem Namen ".user.ini" und fügen Sie Ihre Werte hinzu

upload_max_filesize = 150M
post_max_size = 150M

Boom, Problem gelöst.

Pfund
quelle
Hat für mich gearbeitet! Vielen Dank!
Justin Putney
4
"Zusätzlich zur Hauptdatei php.ini sucht PHP in jedem Verzeichnis nach INI-Dateien, beginnend mit dem Verzeichnis der angeforderten PHP-Datei und bis zum aktuellen Dokumentstamm." php.net/manual/en/configuration.file.per-user.php
bis zum
1
Funktioniert hervorragend mit einer WordPress-Site! Vielen Dank!
avenged_badger
Dies hat großartig funktioniert, da ich es mit .htaccess nicht tun kann. Danke, Mann!
Stratege
PHP liest die Datei user.ini standardmäßig alle 5 Minuten neu.
Seien Sie
9

Ich habe dies mit einer .user.ini-Datei im selben Verzeichnis wie mein index.php-Skript, das meine App lädt, zum Laufen gebracht. Hier sind die Inhalte:

upload_max_filesize = "20M"
post_max_size = "25M"

Dies ist die empfohlene Lösung für Heroku.

dwenaus
quelle
5

Dies kann auch mit der Apache-Konfiguration gesteuert werden. Überprüfen Sie die httpd.conf und / oder .htaccess auf Folgendes:

php_value upload_max_filesize 10M
Byron Whitlock
quelle
0

Wenn Sie auf einem lokalen Server wie wamp oder xampp ausgeführt werden, stellen Sie sicher, dass die von Ihnen angenommene php.ini verwendet wird. Diese Server verwenden normalerweise standardmäßig eine php.ini, die sich nicht in Ihrem HTML-Dokumentordner befindet.

Strandhaus
quelle
0

Diese Lösung kann nur angewendet werden, wenn das Problem bei einer WordPress-Installation auftritt!

Wenn Sie keinen FTP-Zugang haben oder zu faul sind, um Dateien zu bearbeiten,

Sie können das Plugin Maximale Upload-Dateigröße erhöhen verwenden, um die maximale Upload-Dateigröße zu erhöhen.

Sahan
quelle
0

Standardmäßig erlaubt PHP das Hochladen von maximal 2 MB Dateien auf den Server. Sie können jedoch die maximale Größe des Datei-Uploads gemäß Ihren Bedingungen ändern. Mit der PHP-Konfigurationsdatei php.ini können Sie die Größe des Datei-Uploads in PHP erhöhen oder verringern.

Öffnen Sie zuerst die Datei php.ini in Ihrem Texteditor. Durchsuchen Sie die Variable upload_max_filesize und legen Sie die Größe fest, die Sie erhöhen möchten.

Suchen Sie nach der Variablen post_max_size und legen Sie die Größe fest, die Sie erhöhen möchten.

post_max_size = 128M

Sie können dies von hier aus überprüfen

hammad khan
quelle
-1

Wenn Sie ini_set im laufenden Betrieb verwenden, finden Sie hier http://php.net/manual/en/ini.core.php die Informationen, die z. B. upload_max_filesize und post_max_size im laufenden Betrieb nicht geändert werden können (PHP_INI_PERDIR).

Nur eine Änderung der Konfiguration von php.ini, .htaccess oder vhost scheint diese Variablen zu ändern.

Sassman
quelle
-11

Sie können auch in der PHP-Datei wie folgt verwenden

<?php ini_set('upload_max_filesize', '200M'); ?>
Nishant Patel
quelle