Jestem dość zaskoczony, aby znaleźć wyżej wspomniany błąd w moim dzienniku błędów, ponieważ myślałem, że już zrobiłem niezbędne prace do złapać błąd w moim skrypcie PHP:Ostrzeżenie PHP: POST Zawartość-Długość n bajtów przekracza limit 3145728 bajtów w Nieznany w linii 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;
....
}
}
w moim scenariuszu php.ini, odpowiednie są następujące ustawienia:
memory_limit = 128M
post_max_size = 3M
upload_max_filesize = 500K
rozumiem, że 3M jest równoważna 3145728 bajtów i że to, co to uruchamia błąd. Jeśli rozmiar pliku przekracza 500 tys., Ale mniej niż 3M, skrypt PHP będzie mógł działać zgodnie z normą, wydając komunikat o błędzie pod numerem $msg
zgodnie z case 1
.
Jak złapać ten błąd zamiast pozwolić, aby skrypt nagle przerwał ostrzeżenie PHP, gdy rozmiar post przekroczy post_max_size
, ale nadal w granicach limitu pamięci? Spojrzałem na podobne pytania: here, here i here, ale nie mogłem znaleźć odpowiedzi.
Dlaczego nie zawiniecie swojej funkcji w bloku 'try..catch'? – inhan
'error_reporting (E_ALL i ~ E_WARNING);' aby wyłączyć ostrzeżenia PHP. – fdomig
@fdomig To powinno być absolutną ostatnią deską ratunku. –