2009-12-10 10 views
6

sto impostando la massima dimensione del file caricati nella mia forma:PHP, Zend Framework: come impostare il file di caricamento massimo?

$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); 

Ma sto ottenendo questo messaggio di errore nella mia applicazione 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 

Che cosa sto facendo di sbagliato?

risposta

12

upload_max_filesize è un'opzione nella configurazione di PHP stesso e indipendente da Zend Framework.

Se è necessario modificare la dimensione massima di caricamento, è necessario impostarla nel file php.ini - nota che sarà sicuramente necessario modificare anche post_max_size.

+0

Sto cercando di impostarli nel mio file application.ini come phpSettings.post_max_size ma non sembra funzionare, c'è un altro modo per impostarlo? Ti piace una specie di funzione? set_post_max_size() se esiste una funzione di questo tipo? – Andrew

+0

Non è sicuro che questo possa essere configurato dal codice PHP, in realtà, dato che il file/dati caricato è fatto da Apache + PHP prima che il tuo script inizi davvero ... –

+0

Credo che tu possa configurare dal codice PHP, ini_set ('post_max_size', 10485760); –

-2

Hai sovrascritto la dimensione massima predefinita in php.ini?

5

So che questo è stato chiesto qualche tempo fa, ma la risposta è ancora pertinente, e non in realtà in questo messaggio.

Il manifesto originale ha osservato:

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 

e in una ulteriore nota:

non ero in grado di arrivare a questo lavoro: ini_set ('post_max_size', 10485760)

Tecnicamente il metodo di classe setMaxFileSize(), sta facendo la stessa cosa di ini_set.

Che cosa è in gran parte non documentato, ma si applica qui è che è possibile modificare questo valore per qualsiasi cosa che si desidera che non superi il valore nel php.ini che viene letto all'avvio.

Ad esempio, * nix il valore predefinito è 2M. Se non hai modificato il php.ini, sarai in grado di sovrascrivere questo valore solo con un numero compreso tra 0 e 2097152.

Un'ultima nota. Come accennato nel post di Pascal MARTIN, si dice che upload_max_filesize e post_max_size vanno un po 'di pari passo. Qualcos'altro da considerare è che se stai rendendo questi valori un numero piuttosto grande, probabilmente vorrai assicurarti che anche il tuo valore memory_limit sia considerato come se lo script fallisse a causa dell'esaurimento della memoria.

+1

grazie per il chiarimento. molto utile! – Andrew

+0

Grazie per la parte su non superare il valore definito in php.ini ... hai ragione, non è affatto documentato e mi ha fatto perdere un sacco di tempo! = / – MDT

1

Per impostazione predefinita upload_max_filesize è 2 MB in impostazioni php, che è indipendente dalla dimensione massima del file nel metodo di caricamento. Puoi aumentare upload_max_filesize nel file php.ini.

Oppure È anche possibile modificarlo nel progetto .htaccess in questo modo solo le modifiche sono valide per quel progetto. Ad esempio: -

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

ma mantenere post_max_size più di upload_max_filesize e memory_limit dovrebbero essere più di post_max_size.

Problemi correlati