كيفية زيادة حد رفع الملفات في ووردبريس (على أي استضافة)
تحقق من حد الرفع الحالي في ووردبريس، ثم ارفعه في المكان الصحيح لاستضافتك: php.ini أو .user.ini أو .htaccess أو cPanel أو Nginx أو Cloudflare.
لزيادة حد رفع الملفات في ووردبريس، ارفع إعدادين في PHP هما upload_max_filesize وpost_max_size داخل ملف الإعدادات الذي تقرؤه استضافتك فعلًا. هذا الملف هو php.ini على خادم تتحكم فيه، و.user.ini على معظم الاستضافات المشتركة التي تشغّل PHP-FPM أو FastCGI، و.htaccess فقط عندما يشغّل Apache لغة PHP كوحدة (module)، أو MultiPHP INI Editor في cPanel. وإذا كان خادمك يعمل بـ Nginx فارفع أيضًا client_max_body_size. تعديل wp-config.php لن يغيّر حد الرفع.
تحوّل أداة الحد الأقصى لحجم الرفع في ووردبريس حجمًا مستهدفًا واحدًا إلى قيم مطابقة لملفات php.ini (أو .user.ini) و.htaccess وwp-config.php، فتلصقها بدل كتابتها يدويًا.
الخطوة 1: تحقق من حد الرفع الحالي
قبل تغيير أي شيء، اعرف الحد الحالي وأي إعداد يحدده.
- الوسائط > أضف جديد. تعرض شاشة الرفع الحد الأقصى لحجم الملف. هذا هو الرقم الذي تريد زيادته.
- أدوات > صحة الموقع > معلومات. وسّع قسم معالجة الوسائط. يسرد توثيق صحة الموقع ما يظهر هناك: الحد الأقصى المسموح لحجم بيانات POST، والحد الأقصى لحجم الملف المرفوع، والحد الأقصى الفعلي لحجم الملف، وهو الأصغر بين القيمتين. ويعرض قسم الخادم قيمًا أخرى من PHP.


يحسب ووردبريس حده في الدالة wp_max_upload_size()، التي تقرأ upload_max_filesize وpost_max_size من PHP وتأخذ الأصغر. إذا كانت إحداهما 64M والأخرى 8M، فحدك هو 8M.
الخطوة 2: اعرف الإعدادات المهمة
| الإعداد | ما الذي يحدده | القيمة الافتراضية في PHP | أين يمكن تغييره |
|---|---|---|---|
upload_max_filesize | أكبر ملف مفرد يمكن رفعه | 2M | php.ini، .user.ini، .htaccess، httpd.conf |
post_max_size | طلب POST كاملًا بما فيه الملف | 8M | php.ini، .user.ini، .htaccess، httpd.conf |
memory_limit | الذاكرة التي يمكن لـ PHP استخدامها أثناء التشغيل | 128M | في أي مكان، ومنه wp-config.php |
max_execution_time | عدد الثواني المسموح بها لتشغيل السكربت | 30 | في أي مكان، ومنه wp-config.php |
client_max_body_size (Nginx) | جسم الطلب الذي يقبله Nginx | 1m | في إعدادات Nginx فقط |
القيم الافتراضية في PHP وأنماط تغييرها مأخوذة من قائمة توجيهات php.ini، والقيمة الافتراضية في Nginx من توثيق وحدة core في Nginx. معظم الاستضافات تضع قيمًا أعلى من افتراضيات PHP، ولهذا فصحة الموقع هي المكان الذي تقرأ منه أرقامك الحقيقية.
upload_max_filesize وpost_max_size هما ما تسميه PHP إعدادات INI_PERDIR، أي أنها “يمكن ضبطها في php.ini أو .htaccess أو httpd.conf أو .user.ini” ولا مكان غير ذلك. أما memory_limit فلا يحد حجم الملف، لكن ووردبريس يحتاج ذاكرة لإنشاء نسخ مصغرة من الصور الكبيرة، لذا قد يفشل رفع كبير بعد وصوله بسبب خطأ نفاد الذاكرة.
الخطوة 3: ارفع الحد في المكان الصحيح لاستضافتك
| إعداد خادمك | أين تضبطه | ملاحظات |
|---|---|---|
| خادم VPS أو مخصص | ملف php.ini الذي تحمّله PHP فعلًا | أعد تشغيل PHP-FPM أو Apache بعد ذلك |
| استضافة مشتركة تستخدم PHP-FPM أو FastCGI | ملف .user.ini في جذر ووردبريس | قد يستغرق تطبيقه حتى 5 دقائق |
| Apache مع PHP كوحدة (mod_php) | ملف .htaccess مع php_value | يسبب خطأ 500 مع PHP-FPM أو FastCGI |
| استضافة cPanel | Software > MultiPHP INI Editor | يكتب php.ini أو .user.ini أو .htaccess نيابة عنك |
| Nginx أمام PHP | client_max_body_size إضافة إلى قيم PHP | وإلا يعيد Nginx الخطأ 413 |
| استضافة ووردبريس مُدارة | لوحة الاستضافة أو الدعم الفني | كثير من الاستضافات تحدد الرفع على مستوى المنصة |
| موقع خلف Cloudflare | حد الرفع الخاص بـ Cloudflare | 100 MB في خطتي Free وPro |
php.ini (خادم تتحكم فيه)
اعثر أولًا على الملف المحمّل. أنشئ ملفًا مؤقتًا يحتوي على <?php phpinfo();، وافتحه في المتصفح، واقرأ سطر “Loaded Configuration File”، ثم احذف الملف. بعدها عدّل ملف php.ini ذاك:
upload_max_filesize = 128M
post_max_size = 130M
max_execution_time = 300
ثم أعد تشغيل PHP حتى يقرأ التغيير. مع PHP-FPM يتضمن اسم الخدمة رقم الإصدار، مثل sudo systemctl restart php8.3-fpm على Debian أو Ubuntu. ومع mod_php أعد تشغيل Apache.
.user.ini (معظم الاستضافات المشتركة)
لا تقرأ PHP ملفات .user.ini إلا عندما تعمل كـ CGI أو FastCGI، وهذا يشمل PHP-FPM. أنشئ ملف .user.ini أو عدّله في المجلد الذي يحتوي على wp-config.php:
upload_max_filesize = 128M
post_max_size = 130M
تعيد PHP قراءة هذه الملفات كل user_ini.cache_ttl ثانية، والقيمة الافتراضية 300. انتظر خمس دقائق قبل أن تقرر أن التغيير لم ينجح، أو أعد تشغيل PHP-FPM إن استطعت.
.htaccess (فقط Apache مع mod_php)
php_value upload_max_filesize 128M
php_value post_max_size 130M
يصف دليل PHP هذه التوجيهات لـ PHP التي تعمل كوحدة في Apache. إذا ظهر في موقعك خطأ 500 Internal Server Error مباشرة بعد الحفظ، فهذا يعني أن PHP تعمل كـ FastCGI أو PHP-FPM. احذف السطرين واستخدم .user.ini بدلًا منهما.
MultiPHP INI Editor في cPanel
في cPanel افتح Software > MultiPHP INI Editor، واختر نطاقك، وغيّر القيم في Basic Mode. وفق توثيق cPanel، يحفظ Basic Mode القيم في ملفات php.ini و.user.ini و.htaccess حيثما يدعم كل منها الإعداد، فلا تحتاج إلى معرفة الملف الذي يستخدمه خادمك.
Nginx
يتحقق Nginx من حجم الطلب قبل أن تراه PHP. عندما يكون الطلب أكبر من client_max_body_size، يعيد Nginx الخطأ 413 Request Entity Too Large. القيمة الافتراضية هي 1m. أضف داخل كتلة server قيمة لا تقل عن post_max_size:
client_max_body_size 130M;
اختبر وأعد التحميل بالأمر sudo nginx -t && sudo systemctl reload nginx. وفي Apache، الإعداد المقابل هو LimitRequestBody، ونادرًا ما يحتاج إلى تغيير في استضافات ووردبريس العادية.
الاستضافات المُدارة وCloudflare
بعض استضافات ووردبريس المُدارة تتجاهل ملف php.ini أو .user.ini الخاص بك وتحدد الحد للمنصة كلها. إذا ظلت صحة الموقع تعرض الرقم القديم بعد التغيير، فاسأل استضافتك عن الحد الأقصى وهل يمكنهم رفعه.
وإذا كان الموقع يمر عبر Cloudflare، فلدى Cloudflare حد خاص بها. يذكر توثيق التخزين المؤقت لديها أن الحد الأقصى للرفع هو 100 MB في خطتي Free وPro، و200 MB في Business، وحتى 5 GB في Enterprise. ولا يوجد إعداد في PHP يتجاوز ذلك.
لماذا لا ينجح wp-config.php
تنصح مقالات كثيرة بإضافة هذا إلى wp-config.php:
@ini_set( 'upload_max_filesize', '128M' );
@ini_set( 'post_max_size', '130M' );
كلا الإعدادين من نوع INI_PERDIR، ويذكر توثيق PHP أن إعدادات هذا النمط لا يمكن ضبطها عبر ini_set(). الرمز @ يخفي الفشل، فتبدو الأسطر غير ضارة ولا تغيّر شيئًا. ما يستطيع wp-config.php تغييره هو الذاكرة، لأن memory_limit يمكن ضبطه في أي مكان:
define( 'WP_MEMORY_LIMIT', '256M' );
هذا يساعد عندما تفشل الصور الكبيرة أثناء معالجتها. لكنه لا يغيّر الحد الأقصى لحجم الملف المرفوع.
الخطوة 4: تأكد من التغيير
أعد تحميل الوسائط > أضف جديد وتحقق من أن الحد الأقصى لحجم الملف يعرض القيمة الجديدة. إن لم يحدث ذلك:
- تأكد أن
post_max_sizeلا تقل عنupload_max_filesize. ووردبريس يستخدم الأصغر. - تأكد أنك عدّلت الملف الذي تحمّله PHP فعلًا. ملف
php.iniفي مجلد خاطئ يتم تجاهله. - انتظر خمس دقائق بعد تعديل
.user.ini، أو أعد تشغيل PHP-FPM. - إذا تغيّر الرقم في ووردبريس لكن الرفع ما زال يفشل بالخطأ 413، فالعائق في Nginx أو في وسيط (proxy) الاستضافة أو في Cloudflare.
- إذا وصل الملف إلى ووردبريس ثم فشل برسالة “خطأ HTTP”، فالحجم لم يعد هو المشكلة. يشرح دليلنا حول خطأ HTTP في ووردبريس عند رفع الصور الأسباب المعتادة.
إلى أي حد يجب أن ترفعه؟
اضبطه على أكبر ملف تحتاج فعلًا إلى رفعه مع هامش صغير، وأبقِ post_max_size أعلى قليلًا من upload_max_filesize. تستغرق الملفات الكبيرة وقتًا أطول أيضًا، لذا ارفع max_execution_time إذا انتهت مهلة رفع الملفات الكبيرة على الاتصالات البطيئة. وللملفات الكبيرة جدًا مثل الفيديوهات الطويلة أو أرشيفات النسخ الاحتياطي، يكون الرفع عبر SFTP أو بإضافة رفع مجزّأ أكثر موثوقية عادة من رفع ضخم واحد عبر المتصفح، وقد يستبعد حد خطة Cloudflare طريق المتصفح على أي حال.
عندما تعرف الحجم الذي تريده، تكتب لك أداة الحد الأقصى لحجم الرفع أسطر PHP المطابقة. وأضف بنفسك سطر Nginx من هذا الدليل إذا كان خادمك يعمل بـ Nginx.
FAQ
أسئلة
كيف أتحقق من حد الرفع الحالي في ووردبريس؟
اذهب إلى الوسائط > أضف جديد. تعرض شاشة الرفع الحد الأقصى لحجم الملف. وللتفاصيل، افتح أدوات > صحة الموقع > معلومات ووسّع قسم معالجة الوسائط، الذي يعرض الحد الأقصى لحجم الملف المرفوع، والحد الأقصى لحجم بيانات POST، والحد الأقصى الفعلي لحجم الملف، وهو الأصغر بين القيمتين.
لماذا يقول ووردبريس إن الملف المرفوع يتجاوز توجيه upload_max_filesize في php.ini؟
لأن الملف أكبر من إعداد upload_max_filesize في PHP. ووردبريس لا يحدد هذا الحد، بل يقرؤه من PHP. ارفع upload_max_filesize وpost_max_size معًا في php.ini أو .user.ini أو، على Apache مع mod_php، في .htaccess. القيمة الافتراضية في PHP لـ upload_max_filesize هي 2M فقط، رغم أن معظم الاستضافات تضع قيمة أعلى.
هل يمكنني زيادة حد الرفع من wp-config.php؟
لا. upload_max_filesize وpost_max_size إعدادات من نوع PHP_INI_PERDIR، ولا تقبلها PHP إلا من php.ini أو .htaccess أو httpd.conf أو .user.ini. سطر ini_set() في wp-config.php يعمل دون خطأ ولا يغيّر شيئًا. يمكن لملف wp-config.php رفع حد الذاكرة في ووردبريس، لكن الذاكرة ليست ما يحدد حجم الملف.
لماذا ما زلت أحصل على 413 Request Entity Too Large بعد رفع حدود PHP؟
هناك شيء يقف قبل PHP ويرفض الطلب. في Nginx هو client_max_body_size، وقيمته الافتراضية 1m ويعيد خطأ 413 عند تجاوزها. ارفع القيمة داخل كتلة server وأعد تحميل Nginx. وإذا كان موقعك يمر عبر Cloudflare، فقد يوقف حد الرفع في خطتك الطلب قبل وصوله إلى خادمك.
هل يجب أن تكون قيمة post_max_size أكبر من upload_max_filesize؟
يجب أن تكون مساوية لها على الأقل، والأكبر قليلًا أكثر أمانًا. يُرسل الملف داخل طلب POST مع بقية بيانات النموذج، لذا يُحتسب الطلب كله ضمن post_max_size. ويستخدم ووردبريس القيمة الأصغر بين الاثنتين كحد للرفع، لذا فإن رفع upload_max_filesize وحده يترك الحد كما كان.