المدوّنة · ووردبريس

رفع حدّ حجم الملفات: upload_max_filesize وpost_max_size

· 6 دقائق قراءة

رفع حدّ حجم الملفات: upload_max_filesize وpost_max_size

تحاول رفع حزمة قالب ووردبريس جديد، أو إضافة برمجية متقدمة، أو مقطع فيديو توضيحي في مكتبة الوسائط، فتتفاجأ برسالة خطأ حمراء محبطة تفيد بأن: «الملف المرفوع يتجاوز توجيه upload_max_filesize في ملف php.ini» أو تجد أن الرقم المكتوب أسفل نافذة الرفع لا يتجاوز 2 ميغابايت أو 8 ميغابايت فقط، وهو رقم ضئيل جداً لا يكفي حتى لرفع صورة احترافية عالية الدقة.

هذا التقييد المزعج ليس عيباً في منصة ووردبريس ذاتها، بل هو قيد أمان تاريخي وافتراضي تفرضه بيئة تشغيل لغة PHP وخوادم الويب لحماية الخادم من محاولات الإغراق الخبيثة بملفات ضخمة قد تستنزف الذاكرة ومساحة التخزين اللحظية. ولرفع هذا الحد بنجاح، لا يكفي تعديل خيار واحد؛ بل يجب فهم المعادلة الهندسية المتكاملة بين توجيهات الحجم والوقت ومسارات التخزين المؤقت لتكتمل عملية الرفع دون انقطاع الاتصال.

المعادلة الهندسية: التناسب بين إعدادات PHP الأربعة#

الخطأ الأكثر شيوعاً الذي يقع فيه معظم أصحاب المواقع هو رفع قيمة upload_max_filesize بمفردها، ثم يتساءلون لماذا لم يتغير الحد في لوحة تحكم ووردبريس أو لماذا يفشل الرفع برسائل غامضة. لكي تنجح العملية هندسياً، يجب أن تتدرج القيم وفق قاعدة منطقية صارمة:

المتغير البرمجي الوظيفة والمسؤولية التقنية القيمة النموذجية المقترحة
upload_max_filesize الحد الأقصى لحجم الملف الواحد المرفوع على حدة 64M
post_max_size الحد الأقصى لطلب POST كاملاً (الملف + بيانات النموذج والحقول)؛ يجب أن يكون أكبر من upload_max_filesize كما ينص توثيق PHP 128M
memory_limit الذاكرة العشوائية المتاحة لمعالج PHP لفك ومعالجة البيانات؛ يجب أن تكون دائماً أكبر من post_max_size 256M أو 512M
max_execution_time المهلة الزمنية بالثواني المسموح بها للسكربت لنقل ومعالجة الملف قبل قطع الاتصال 300 ثانية (خمس دقائق)

قاعدة ذهبية: إذا ضبطت upload_max_filesize = 128M ولكنك تركت post_max_size = 8M، فإن الخادم سيرفض فوراً أي طلب يتجاوز ثمانية ميغابايت، ولن ينظر لقيمة الـ 128 ميغابايت إطلاقاً!

الطريقة الأولى: التعديل عبر لوحة تحكم cPanel (الأسهل والأشيع)#

تتيح لوحات cPanel الحديثة تحرير هذه الإعدادات بضغطة زر دون الحاجة للتعامل المباشر مع الأكواد:

الخيار أ: عبر أداة MultiPHP INI Editor#

  1. سجل الدخول إلى حسابك في cPanel.
  2. في قسم البرمجيات (Software)، افتح أداة MultiPHP INI Editor.
  3. في القائمة المنسدلة Select a location، اختر اسم نطاق موقعك أو المجلد الرئيسي public_html.
  4. عدل الخيارات التالية في الجدول:
    • upload_max_filesize: اجعلها 64M.
    • post_max_size: اجعلها 128M.
    • memory_limit: اجعلها 256M.
    • max_execution_time: اجعلها 300.
    • max_input_time: اجعلها 300.
  5. انقر على زر تطبيق (Apply) أسفل الصفحة لحفظ وتطبيق الإعدادات في التو واللحظة.

الخيار ب: عبر أداة Select PHP Version (أنظمة CloudLinux)#

  1. افتح أداة Select PHP Version في لوحة cPanel.
  2. انتقل إلى تبويب Options.
  3. انزل في الصفحة حتى تجد سطري upload_max_filesize و post_max_size، وانقر على القيمة لاختيار السعة المرغوبة من القائمة المنسدلة وسيحفظ النظام التعديل تلقائياً.

الطريقة الثانية: التعديل عبر ملف .user.ini (لاستضافات معالج PHP-FPM)#

في معظم خوادم الاستضافة السريعة الحديثة التي تعتمد على معالج PHP-FPM، يتم تجاهل أوامر PHP المكتوبة داخل ملف .htaccess القديم، وتعتمد المنظومة بدلاً منها على قراءة ملف التكوين المحلي .user.ini:

  1. افتح مدير الملفات وتوجه إلى المجلد الجذري لموقعك (public_html).
  2. ابحث عن ملف باسم .user.ini، وإن لم تجده فأنشئ ملفاً جديداً بهذا الاسم بالضبط (تأكد من وجود النقطة في أول الاسم).
  3. اكتب التوجيهات التالية بداخل الملف:
    upload_max_filesize = 64M
    post_max_size = 128M
    memory_limit = 256M
    max_execution_time = 300
    max_input_time = 300
  4. احفظ الملف. قد يستغرق سريان ملف .user.ini نحو خمس دقائق حتى يتحدث كاش خادم PHP تلقائياً.

الطريقة الثالثة: التعديل عبر ملف .htaccess (لخوادم Apache)#

إذا كانت استضافتك تعمل على خادم Apache التقليدي بنظام mod_php:

  1. افتح ملف .htaccess في المجلد الرئيسي لموقعك عبر محرر النصوص.
  2. أضف الأسطر التالية في بداية الملف:
    php_value upload_max_filesize 64M
    php_value post_max_size 128M
    php_value memory_limit 256M
    php_value max_execution_time 300
    php_value max_input_time 300
  3. احفظ الملف وافتح موقعك. إذا ظهر خطأ 500، فهذا يعني أن خادمك يعمل بنظام FPM ولا يدعم توجيهات php_value في htaccess؛ احذف هذه الأسطر فوراً واستخدم الطريقة الثانية.

الطريقة الرابعة: على خوادم VPS وخوادم Nginx السحابية#

إذا كنت تدير خادمك السحابي الخاص عبر Nginx، فلن يكفي تعديل ملف php.ini؛ لأن خادم Nginx يمتلك جدار حماية مستقل يرفض أي طلب رفع يتجاوز ميغابايت واحداً افتراضياً، ويعيد في وجه الزائر خطأ شهيراً: «413 Request Entity Too Large».

لحل المشكلة نهائياً على خوادم أوبونتو وديبيان:

1. تعديل ملف إعدادات PHP-FPM:#

sudo nano /etc/php/8.2/fpm/php.ini

عدل القيم التالية:

upload_max_filesize = 64M
post_max_size = 128M
max_execution_time = 300

2. تعديل خادم Nginx (المتغير الحاسم client_max_body_size):#

افتح ملف إعداد موقعك داخل /etc/nginx/sites-available/ أو الملف العام /etc/nginx/nginx.conf، وأضف التوجيه التالي داخل كتلة http أو كتلة server:

client_max_body_size 128M;

3. فحص وإعادة تحميل الخدمات:#

sudo nginx -t
sudo systemctl reload nginx
sudo systemctl restart php8.2-fpm

حالات استثنائية وأسباب خفية لفشل رفع الملفات#

  • حد شبكة Cloudflare المجانية (100MB): إذا كان موقعك مربوطاً بشبكة Cloudflare بالخطة المجانية، فإن كلاود فلير تمنع مرور أي طلب رفع يتجاوز مائة ميغابايت من خلال وسيطها السحابي وتعيد خطأ 413، بحسب توثيق Cloudflare لخطأ 413 (الحد نفسه في خطة Pro، و200MB في Business). إذا أردت رفع ملف أكبر من ذلك، فعليك رفعه عبر بروتوكول SFTP أو إيقاف البروكسي (السحابة البرتقالية) مؤقتاً أثناء الرفع.
  • امتلاء مساحة المجلد المؤقت (upload_tmp_dir): يقوم معالج PHP بتخزين الملف المرفوع في مجلد مؤقت (عادة /tmp) قبل تسليمه إلى ووردبريس. إذا كان قسم /tmp في القرص ممتلئاً بالكامل أو كانت صلاحياته تمنع الكتابة، سيفشل الرفع حتى وإن كانت إعدادات الحجم سليمة.
  • إعدادات شبكة ووردبريس متعددة المواقع (Multisite): في شبكات ووردبريس المتعددة، يوجد إعداد خاص داخل إدارة الشبكة > إعدادات > الحد الأقصى لحجم ملف الرفع؛ وهذا الرقم يتجاوز إعدادات السيرفر إذا كان أقل منها، ويجب رفعه يدوياً داخل إعدادات الشبكة.
  • توقف شريط الرفع في مراحله الأخيرة: يحدث هذا غالباً بسبب بطء اتصال الإنترنت للمستخدم مما يؤدي لانتهاء مهلة max_execution_time قبل اكتمال نقل كافة الحزم إلى الخادم.

كيف تتأكد أن الحد قد ارتفع بنجاح؟#

  1. ادخل إلى لوحة تحكم ووردبريس.
  2. توجه إلى وسائط > أضف ملفاً جديداً.
  3. انظر أسفل مربع السحب والإفلات، ستجد عبارة صريحة توضح الحد الجديد: «الحد الأقصى لحجم ملف التحميل: 64 MB».
  4. يمكنك أيضاً مراجعة تقرير أدوات > صحة الموقع > معلومات > خادم، وستجد قراءة دقيقة لكافة متغيرات PHP المطبقة حالياً في السيرفر.

المصادر#

التعليقات

كن أول من يشارك رأيه أو تجربته.

أضف تعليقاً أو سؤالاً

سجّل الدخول لتعجب بالتعليقات المفيدة وترفعها لأعلى النقاش. سجّل الدخول

لا يُنشر، ولا نرسل إليه شيئاً.

يظهر التعليق بعد مراجعته. الروابط لا تُفعَّل.

تبني موقعاً عربياً؟

سكربتات وقوالب وإضافات وخوادم — مصمّمة للمواقع العربية.

تصفّح المنتجات