Sono abbastanza sorpreso di trovare l'errore sopra indicato nel mio log degli errori perché pensavo di aver già fatto il lavoro necessario per rilevare l'errore nel mio script PHP:Avviso PHP: contenuto POST-lunghezza di n byte supera il limite di 3145728 byte in Unknown sulla linea 0
if ($_FILES['image']['error'] == 0)
{
// go ahead to process the image file
}
else
{
// determine the error
switch($_FILES['image']['error'])
{
case "1":
$msg = "Uploaded file exceeds the upload_max_filesize directive in php.ini.";
break;
....
}
}
nel mio script php.ini, le impostazioni rilevanti sono:
memory_limit = 128M
post_max_size = 3M
upload_max_filesize = 500K
capisco che la 3M è equivalente a 3.145.728 byte e che questo è ciò che sta facendo scattare l'errore. Se la dimensione del file è superiore a 500k ma inferiore a 3M, lo script PHP potrebbe essere eseguito normalmente, inviando il messaggio di errore in $msg
come da case 1
.
Come posso rilevare questo errore invece di lasciare che lo script termini bruscamente con un avviso PHP quando le dimensioni del post superano lo post_max_size
ma rimangono comunque entro il limite di memoria? Ho esaminato domande simili here, here e here, ma non ho trovato risposta.
Perché non si avvolge la funzione in un blocco 'try..catch'? – inhan
'error_reporting (E_ALL & ~ E_WARNING);' per disattivare gli avvertimenti PHP. – fdomig
@fdomig Questa dovrebbe essere l'ultima risorsa assoluta. –