Belirli bir boyut sınırında başarısız olan yükleme bir sınırdır — bkz. 413 İstek gövdesi çok büyük. Sabit olmayan boyutlarda, yolun ortasında, bağlantı öylece düşerek başarısız olan yükleme ise yol üstünde bir yerdeki zaman aşımıdır.

Yükseltilecek zaman aşımları — hepsi

# nginx
client_body_timeout 300s;
client_max_body_size 512M;
send_timeout 300s;
fastcgi_read_timeout 300s;
proxy_read_timeout 300s;
; php
max_execution_time = 300
max_input_time = 300      ; the one that is forgotten - it covers the UPLOAD itself

max_input_time, PHP'nin isteği almaya ayıracağı süreyi sınırlar. max_execution_time'dan ayrıdır, varsayılanı düşüktür ve telefondan yapılan yavaş bir yüklemeyi öldüren şey odur.

Disk ve geçici alan

df -h /tmp /var/lib/php/tmp
grep upload_tmp_dir /etc/php/8.3/fpm/php.ini

Yükleme önce geçici bir dosyaya yazılır. O dosya sistemi dolarsa, yazma aktarımın ortasında başarısız olur ve bağlantı hiçbir yerde ileti bırakmadan düşer.

Neyin kaydedildiğine bakın

sudo tail -50 /var/log/nginx/error.log
sudo journalctl -u php8.3-fpm -n 50 --no-pager

client intended to send too large body, boyut sınırıdır. timed out ile upstream prematurely closed ise yukarıdaki zaman aşımlarıdır. Hiçbir kayıt yoksa, genelde tarayıcı ya da bir vekil sunucudan önce pes etmiştir.

Cloudflare'in arkasında, düşük planlarda vekilin kendi yükleme tavanı vardır ve yerelde ne ayarlarsanız ayarlayın o geçerlidir. Vekili atlayan bir alt alan adına yükleyin ya da parçalar hâlinde yükleyin.

Büyük dosyalar için doğru çözüm

Parçalı ya da sürdürülebilir yükleme, büyük bir dosyayı çok sayıda küçük istek olarak gönderir; böylece tek bir istek uzun sürmez ve kopan bağlantı baştan başlamak yerine kaldığı yerden devam eder. Birkaç yüz megabaytın üstündeki her şey için tek güvenilir yanıt budur.