2009-07-13 5 views
67

Ich benutze PHP 5.3.0 und habe etwas entdeckt, das ein Fehler sein könnte (in diesem Fall werde ich es melden) oder könnte mich sein - also frage ich, um sicherzustellen.Ändern von upload_max_filesize auf PHP

Wenn dieser Code ausgeführt wird:

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

ich am Ende mit:

2M, 8M 

Dies ist trotz meiner php.ini diese höhere Einstellung:

upload_max_filesize = 10M 
post_max_size = 10M 

(nur einmal vorkommende)

Weil t Der Fehler tritt auf, nachdem ich den Wert gesetzt habe und er in php.ini eingestellt wurde. Ich bin geneigt, es für einen Fehler zu halten. Kann mir jemand bestätigen oder zeigen, wo ich falsch liege?

Update: Sieht aus wie Neustart von Apache behoben - ich dachte immer, es musste nicht neu gestartet werden, wenn Sie php.ini geändert.

+7

„Ich dachte immer, es nicht neu gestartet werden musste, wenn Du hast php.ini geändert. " PHP CLI nimmt Änderungen sofort auf, weil sie php.ini bei jedem Aufruf analysiert. mod_php parst php.ini einmal - wenn Apache startet. –

+0

Ich hatte in letzter Zeit das gleiche Problem. upload_max_filesize würde nicht ohne Neustart von Apache wirksam werden. Ich bin auf einem PHP 5.2.9. Nach dem Neustart funktioniert alles in Ordnung. – Haluk

+0

Um einen vollständigen Apache-Neustart zu vermeiden, verwenden Sie einfach "sudo Service Apache2 reload" – user1048839

Antwort

53

Sie nicht shorthand notation Konfigurationswerte außerhalb der php.ini einstellen können. Ich nehme an, dass es als kompilierter Standard auf 2MB zurückfällt, wenn es mit einem schlechten Wert konfrontiert wird.

Auf der anderen Seite, glaube ich nicht upload_max_filesize könnte mit ini_set() festgelegt werden. Die "official" list gibt an, dass es PHP_INI_PERDIR ist.

+10

Sie denken richtig! Sie können upload_max_filesize nicht mit ini_set() setzen, da es sich bei upload_max_filesize um einen PHP_INI_PERDIR-Typ handelt, der nur über php.ini, .htaccess oder httpd.conf wie folgt geändert werden kann: http://php.net/manual/en/configuration. changes.modes.php –

+1

Eigentlich können Sie Kurzschreibweise außerhalb von PHP.ini verwenden; Sie können es in '.htaccess' und auch mit' ini_set' verwenden. Vielleicht nicht in allen Versionen. –

56

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

php_value upload_max_filesize 10M 
php_value post_max_size 10M 
+1

Nein, das ist meine eigene Apache/PHP-Instanz auf meinem Computer (das ist Windows, wenn es relevant ist). Ich werde versuchen, diese zur Apache-Konfiguration hinzuzufügen. – Ross

+5

Update: Dies betrifft es (ändert sie auf 10), so dass diese Methode funktioniert. Ich bin immer noch ziemlich verwirrt, warum es nicht funktioniert in php.ini oder mit ini_set. – Ross

+0

+1 Dies ist definitiv der Weg zu gehen, wenn Sie nicht zu php.ini kommen können - vielen Dank. –

2

Dies kann auch mit der Apache-Konfiguration gesteuert werden. Überprüfen Sie die httpd.conf und/oder .htaccess für so etwas wie die folgenden:

php_value upload_max_filesize 10M 
-1

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

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

-1

Wenn Sie auf einem lokalen Server wie wamp oder xampp laufen, stellen Sie sicher, dass es die php.ini verwendet, die Sie denken. Diese Server verwenden normalerweise eine php.ini, die sich nicht in Ihrem html docs-Ordner befindet.

-11

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

<?php ini_set('upload_max_filesize', '200M'); ?> 
+2

Das ist eklatant falsch: http://stackoverflow.com/a/13442343/1413865 –

6

Ich habe diese eine .user.ini-Datei im selben Verzeichnis wie meine index.php Skript arbeiten mit, dass meine App lädt. Hier sind die Inhalte:

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

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

30

Da ich gerade auf einem freigegebenen Host zu diesem Problem lief und die Werte nicht zu meiner .htaccess-Datei hinzufügen konnte, dachte ich, ich würde meine Lösung teilen.

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

eine Datei ".user.ini" genannt Stellen und Ihre Werte hinzufügen

upload_max_filesize = 150M 
post_max_size = 150M 

Boom, Problem gelöst.

+0

Arbeitete für mich! Vielen Dank! –

+3

"Zusätzlich zur Hauptdatei php.ini sucht PHP nach INI-Dateien in jedem Verzeichnis, beginnend mit dem Verzeichnis der angeforderten PHP-Datei, und arbeitet sich bis zum aktuellen Dokumentenstamm hoch." http://php.net/manual/en/configuration.file.per-user.php – untill

+0

Sie sind der Mann! Danke vielmals ! – Dia

-1

Ich habe das gleiche Problem konfrontiert, aber ich fand heraus, dass nicht alle Konfigurationseinstellungen() Funktion ini_set gesetzt werden konnte, überprüfen Sie diese Where a configuration setting may be set