الانتقال إلى المحتوى
الإعداد

كيفية زيادة حد رفع الملفات في ووردبريس (على أي استضافة)

تحقق من حد الرفع الحالي في ووردبريس، ثم ارفعه في المكان الصحيح لاستضافتك: 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.
شاشة Upload Media في ووردبريس وفيها السطر Maximum upload file size: 2 GB أسفل منطقة الرفع
هنا يظهر الحد في شاشة الرفع، أسفل منطقة الرفع. قيمة 2 GB تخص خادم الاختبار لدينا، وكثير من الاستضافات تضبط أقل من ذلك بكثير.
قسم Media Handling في Site Health Info بووردبريس، ويعرض max size of post data allowed وmax size of an uploaded file وmax effective file size
Tools > Site Health > Info > Media Handling في موقع الاختبار، وتظهر حدود post data والملف المرفوع والحد الفعلي في صفوف منفصلة.

يحسب ووردبريس حده في الدالة wp_max_upload_size()، التي تقرأ upload_max_filesize وpost_max_size من PHP وتأخذ الأصغر. إذا كانت إحداهما 64M والأخرى 8M، فحدك هو 8M.

الخطوة 2: اعرف الإعدادات المهمة

الإعدادما الذي يحددهالقيمة الافتراضية في PHPأين يمكن تغييره
upload_max_filesizeأكبر ملف مفرد يمكن رفعه2Mphp.ini، .user.ini، .htaccess، httpd.conf
post_max_sizeطلب POST كاملًا بما فيه الملف8Mphp.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)جسم الطلب الذي يقبله Nginx1mفي إعدادات 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
استضافة cPanelSoftware > MultiPHP INI Editorيكتب php.ini أو .user.ini أو .htaccess نيابة عنك
Nginx أمام PHPclient_max_body_size إضافة إلى قيم PHPوإلا يعيد Nginx الخطأ 413
استضافة ووردبريس مُدارةلوحة الاستضافة أو الدعم الفنيكثير من الاستضافات تحدد الرفع على مستوى المنصة
موقع خلف Cloudflareحد الرفع الخاص بـ Cloudflare100 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 وحده يترك الحد كما كان.