الملف الذي تم تحميله يتجاوز التوجيه upload_max_filesize
رفض PHP الملف قبل أن يرى WordPress بايت منه. الرقم في الرسالة هو سقف PHP ، وليس WordPress.
The uploaded file exceeds the upload_max_filesize directive in php.ini.
أربعة حدود منفصلة يمكن أن تنتج هذا ، ورفع الخطأ واحد لا يغير شيئا. طباعة ما تقارير PHP حاليا ل upload_max_filesize و post_max_size ، مقارنة على حد سواء ضد الملف الخاص بك ، وتذكر آخر _max_size يجب أن يكون أكبر من اثنين أو فشل تحميل بصمت بدلا من ذلك.
الأسباب الأرجح أولًا.
افحص القائمة بالترتيب. يتيح لك كل فحص تأكيد السبب أو استبعاده قبل تغيير أي شيء، لأن الحلول تختلف والتخمين يكلّف أكثر من تنفيذ أمر للتحقق.
| السبب | كيفية التحقق | الإصلاح |
|---|---|---|
| upload_max_filesize أقل من حجم الملف | وسائل الإعلام إضافة جديد يطبع الحد الأقصى الفعال تحت منطقة الإسقاط. إذا كان هذا الرقم أصغر من الملف ، فهذا هو. | رفع upload_max_filesize في تكوين PHP الذي يتم تحميله بالفعل. القيمة في php.ini لا تقرأ العملية هي السبب المعتاد وراء عدم فعل التحرير لأي شيء. |
| حجم post_max_size أصغر من upload_max_filesize | فشل التحميل مع مصفوفة $_FILES فارغة بدلاً من هذه الرسالة ، أو إعادة تحميل شاشة المشرف بدون أي خطأ على الإطلاق. | تعيين post_max_size أعلاه upload_max_filesize. PHP يتجاهل الجسم طلب كامل أولا، لذلك الحد من ملف سخي وراء حد هيئة صغيرة يحصل أبدا استشارة. |
| يقوم خادم الويب بتخطي الطلب قبل تشغيل PHP | يعرض المتصفح 413 من nginx أو Apache بدلاً من شاشة WordPress. لا يظهر أي شيء في سجل PHP لأنه لم يتم الوصول إلى PHP أبدًا. | رفع client_max_body_size in nginx, أو LimitRequestBody in Apache, إلى قيمة PHP على الأقل. يتم فرض هذا الحد على Content-Length ، لذلك يرفض الطلب قبل تخزين أي منه. |
| حد شبكة متعدد المواقع | يحتوي "الإعدادات" على حقل "حجم ملف تحميل الحد الأقصى" بالكيلوبايت ، وهو أقل من حد PHP. | رفع إعداد الشبكة. يتم تطبيقه لكل موقع بغض النظر عن ما يسمح به PHP ، ويتم قياسه بالكيلوبايت بينما كل حد آخر هنا هو MB. |
الإصلاح خطوة بخطوة.
تفترض الأوامر توفر WP-CLI والوصول إلى سطر الأوامر. إن لم يتوفرا، تشرح كل خطوة الإجراء كي تنفذه من لوحة التحكم أو عبر SFTP.
اسأل PHP ما الذي يفرضه ، من داخل WordPress
القيمة التي تهم هي تلك التي عملية التشغيل لديها، والتي ليست بالضرورة واحدة في php.ini قمت بتحريرها.
wp eval 'echo ini_get("upload_max_filesize"), " / ", ini_get("post_max_size"), PHP_EOL;'أوجد أي php.ini يتم تحميل هذه العملية فعليًا
يمكن أن يكون للكومة عدة. فقط المحملة واحدة لها أي تأثير ، ويتم طباعة المسار لك.
php --ini | head -n 3
رفع كلا القيمتين، مع الحفاظ على post_max_size أكبر
اجمعهم معاً. رفع واحد دون الآخر هو الطريقة الأكثر شيوعاً التي يتم بها إصلاح نصف هذا.
upload_max_filesize = 256M post_max_size = 320M memory_limit = 512M
رفع حد خادم الويب لمطابقة
PHP لا يرى طلب خادم الويب مرفوض بالفعل ، لذلك يجب أن يتحرك هذا أيضًا.
# nginx client_max_body_size 320m; # then nginx -t && systemctl reload nginx
تأكيد السقف الجديد هو العيش
أعد قراءته من WordPress بدلاً من الوثوق بالملف. إذا لم يتغير ، لم يتم إعادة تحميل PHP-FPM.
systemctl reload php*-fpm wp eval 'echo ini_get("upload_max_filesize"), PHP_EOL;'
ما تتولاه المنصة عنك.
يتم تعيين الحدود الأربعة معا هنا بدلا من واحد في وقت واحد، ويتم تكوين nginx عمدا فوق كل قيمة يمكن أن تنتج شاشة إعدادات PHP - وبالتالي فإن الحد الذي يمكنك رؤيته وتغييره في لوحة القيادة هو الذي ينطبق بالفعل، بدلا من أصغر غطاء خادم الويب تجاوز بصمت ذلك. تغييره هو حقل النموذج، وليس تحرير إلى ملف موقعه عليك أن تعمل أولا.
الأسئلة الشائعة.
رفعت upload_max_filesize ولم يتغير شيء. لماذا؟
ما الفرق بين هذا و "فشل في كتابة ملف إلى قرص"؟
هل هناك حد أقصى لا ينبغي أن أتجاوزه؟
هل يمكنني رفع الحد الأقصى لموقع واحد على شبكة متعددة المواقع فقط؟
إن لم يكن هذا هو السبب.
قد تبدو هذه الأخطاء متشابهة في المتصفح.