2009-12-10 8 views
6

Ich gründe die maximale Upload-Dateigröße in meiner Form:PHP, Zend Framework: Wie legt man die maximale Dateigröße für den Upload fest?

$file = new Zend_Form_Element_File('file'); 
$file->setLabel('File to upload:') 
    ->setRequired(true) 
    ->addValidator('NotEmpty') 
    ->addValidator('Count', false, 1) 
    ->addValidator('Size', false, 10485760) //10MB = 10,485,760 bytes 
    ->setMaxFileSize(10485760) 
    ->setDestination(APPLICATION_UPLOADS_DIR); 
$this->addElement($file); 

Aber ich bin immer diese Fehlermeldung in meiner Anwendung Zend Framework:

Notice: Your 'upload_max_filesize' config setting limits the maximum filesize to '2097152'. You tried to set '10485760' in /location/to/Zend/Form/Element/File.php on line 620 

Was mache ich falsch?

Antwort

12

Die upload_max_filesize ist eine Option in der Konfiguration von PHP selbst und unabhängig von Zend Framework.

Wenn Sie diese maximale Uploadgröße ändern müssen, sollten Sie sie in Ihrer Datei php.ini einstellen - beachten Sie, dass Sie sicherlich auch post_max_size ändern müssen.

+0

Ich versuche, diese in meiner application.ini-Datei als phpSettings.post_max_size zu setzen, aber es scheint nicht zu funktionieren, gibt es eine andere Möglichkeit, die ich einstellen kann? Wie eine Art von Funktion? set_post_max_size() wenn eine solche Funktion existiert? – Andrew

+0

Nicht sicher, dass dies aus dem PHP-Code konfiguriert werden kann, tatsächlich, da der Umgang mit den hochgeladenen Daten/Datei von Apache + PHP getan wird, bevor Ihr Skript sogar wirklich startet ... –

+0

Ich glaube, Sie können von PHP-Code konfigurieren, ini_set ('post_max_size', 10485760); –

-2

Haben Sie die voreingestellte maximale Größe in php.ini überschrieben?

5

Ich weiß, das wurde vor einer Weile gefragt, aber die Antwort ist immer noch relevant, und nicht wirklich in dieser Nachricht.

Das ursprüngliche Plakat bemerkt:

Notice: Your 'upload_max_filesize' config setting limits the maximum filesize to '2097152'. You tried to set '10485760' in /location/to/Zend/Form/Element/File.php on line 620 

und in einer weiteren Anmerkung:

ich nicht in der Lage war, diese Arbeit zu bekommen: ini_set ('post_max_size', 10485760)

Technisch macht die Klassenmethode setMaxFileSize() dasselbe wie ini_set.

Was ist weitgehend undokumentiert, aber hier gilt, ist, dass Sie diesen Wert auf alles, was Sie ändern möchten sind erlaubt, dass nicht den Wert in der php.ini überschreiten, die beim Start gelesen wird.

Zum Beispiel ist der * nix der Standardwert 2M. Wenn Sie die php.ini nicht geändert haben, können Sie diesen Wert nur mit einer Zahl zwischen 0 und 2097152 überschreiben.

Eine letzte Anmerkung. Wie in Pascal MARTINs Beitrag erwähnt, wird erwähnt, dass upload_max_filesize und post_max_size etwas miteinander Hand in Hand gehen. Wenn Sie diese Werte zu einer etwas größeren Zahl machen, sollten Sie sicherstellen, dass der Wert memory_limit ebenfalls berücksichtigt wird, da das Skript aufgrund einer Speichererschöpfung fehlschlägt.

+1

danke für die Klarstellung. sehr hilfreich! – Andrew

+0

Danke für den Teil über den Wert, der in php.ini definiert ist ... du hast recht, es ist überhaupt nicht dokumentiert und es hat mich sehr viel Zeit verschwendet! = / – MDT

1

Standardmäßig upload_max_filesize ist 2 MB in PHP-Einstellungen, die unabhängig von der maximalen Dateigröße in Ihrer Upload-Methode ist. Sie können upload_max_filesize in der Datei php.ini erhöhen.

Oder Sie können es auch in Ihrem Projekt ändern .htaccess Datei auf diese Weise Änderungen sind nur für dieses Projekt. Zum Beispiel: -

php_value upload_max_filesize 20M 
php_value post_max_size 25M 
php_value memory_limit 100M 

aber halten post_max_size mehr als upload_max_filesize und memory_limit sollte mehr als post_max_size sein.