الرفعُ الفاشل واحدٌ من ثلاثة حدودٍ في الغالب الأعمّ، ورفعُ الحدّ الذي تعرفه يترك الاثنين الآخرين في الطريق. والثلاثةُ يجب أن تكون بحجم الملفّ على الأقلّ.

الثلاثة

  • upload_max_filesize (PHP) — أكبرُ ملفٍّ منفرد.
  • post_max_size (PHP) — الطلبُ كلُّه، فيجب أن يكون أكبرَ من الملفّ: فحقولُ النموذج تُحسَب أيضًا.
  • client_max_body_size (Nginx) — يرفض خادمُ الوِب قبل أن تُبلَغ PHP أصلًا.
; php.ini
upload_max_filesize = 64M
post_max_size = 72M
memory_limit = 256M
# nginx
client_max_body_size 72M;

أيُّها رفض

  • 413 Request Entity Too Large — Nginx. ولم تره PHP قطّ.
  • رسالةٌ من PHP عن الحجم — upload_max_filesize.
  • ‏$_POST فارغٌ بلا خطأ — post_max_size. فـ PHP تُلقي الطلبَ كلَّه في صمت، ولهذا يحيّر هذا الحدُّ بهذا القدر.

تأكّد أنّ التغيير أخذ مفعوله

php -i | grep -E "upload_max_filesize|post_max_size"
هذا يقرأ إعدادَ سطر الأوامر، وهو كثيرًا ما يكون ملفًّا غير الذي يستعمله خادم الوِب. فثِق بصفحة phpinfo() لا بسطر الأوامر — فهي وحدها تُظهر ما يعمل به موقعك فعلًا.
وووردبريس يعرض الحدَّ الفعّال في صفحة الوسائط. فإن ظلّ يعرض الرقم القديم بعد تغييرٍ فلم يُعَد تحميل PHP-FPM: systemctl reload php8.3-fpm.