Tôi khá ngạc nhiên khi tìm thấy lỗi được đề cập ở trên trong nhật ký lỗi của mình vì tôi nghĩ mình đã thực hiện công việc cần thiết bắt lỗi trong script PHP của tôi:PHP Cảnh báo: POST Nội dung Độ dài của n byte vượt quá giới hạn 3145728 byte trong Không xác định trên dòng 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;
....
}
}
trong kịch bản php.ini của tôi, các thiết lập liên quan là:
memory_limit = 128M
post_max_size = 3M
upload_max_filesize = 500K
tôi hiểu rằng 3M tương đương với 3.145.728 byte và rằng đây là những gì mà đang kích hoạt lỗi. Nếu kích thước tệp ở trên 500k nhưng nhỏ hơn 3M, tập lệnh PHP sẽ có thể chạy như bình thường, phát hành thông báo lỗi trong $msg
theo case 1
.
Làm cách nào để bắt lỗi này thay vì cho phép tập lệnh chấm dứt đột ngột bằng cảnh báo PHP khi kích thước bài đăng vượt quá post_max_size
nhưng vẫn còn trong giới hạn bộ nhớ? Tôi đã xem các câu hỏi tương tự here, here và here, nhưng không thể tìm thấy câu trả lời.
Tại sao bạn không bọc chức năng của mình trong khối 'try..catch'? – inhan
'error_reporting (E_ALL & ~ E_WARNING);' để tắt cảnh báo PHP. – fdomig
@fdomig Đó phải là phương sách cuối cùng tuyệt đối. –