Angka 413 datang dari server web, bukan dari kode Anda. Permintaannya diputus sebelum sampai ke PHP; itu sebabnya tidak ada apa pun di log aplikasi, dan itu sebabnya menaikkan upload_max_filesize saja tidak mengubah apa-apa.

Nginx

# in http, server or location
client_max_body_size 64M;

sudo nginx -t && sudo systemctl reload nginx

Nilai bawaannya 1M. Itulah batas yang pertama ditabrak hampir semua orang.

PHP, dan kedua nilainya

; php.ini
upload_max_filesize = 64M
post_max_size = 68M       ; must exceed upload_max_filesize
memory_limit = 128M
max_execution_time = 300
post_max_size harus LEBIH BESAR daripada upload_max_filesize, sebab permintaannya membawa berkas ditambah sisa formulirnya. Samakan keduanya, dan berkas yang persis sebesar batas itu akan gagal tanpa satu pun pesan yang berguna.

Apache dan LiteSpeed

# .htaccess
LimitRequestBody 67108864
php_value upload_max_filesize 64M
php_value post_max_size 68M

Lalu pastikan apa yang sebenarnya dimuat

php -i | grep -E 'upload_max_filesize|post_max_size'   # the CLI, which may differ
# and from the web, in a temporary file:
# <?php echo ini_get('upload_max_filesize');
Baris perintah dan server web membaca berkas ini yang berbeda. Perubahan yang muncul di php -i tetapi tidak di peramban berarti Anda menyunting berkas yang keliru — periksa juga direktori kumpulan PHP-FPM.

Muat ulang setiap kali ada perubahan

sudo systemctl reload php8.3-fpm nginx
Di hosting EGPHP batas-batas ini ditetapkan per paket dan bisa dinaikkan dari panel. Lihat juga Batas unggah yang mengabaikan php.ini Anda.