عادةً ما يكون سبب توقف عملية تحميل الملفات إلى Nextcloud عند 2 جيجابايت هو أحد مكونات مسار الطلب، وليس إعدادًا عامًا واحدًا في Nextcloud. لقبول ملفات أكبر، حدد حجمًا مستهدفًا أعلى من حجم الملف في كل مكون يُعنى بالتحميل: PHP، وخادم الويب، وأي خادم وكيل عكسي أو لوحة تحكم الاستضافة. ثم تأكد من أن مساحة التخزين والمساحة المؤقتة ومهل الطلبات كافية لدعم عملية النقل.
يستخدم هذا الدليل حجمًا مستهدفًا قدره 5 جيجابايت كمثال للملفات التي يصل حجمها إلى حوالي 4 جيجابايت. اختر حدًا يتناسب مع استخدامك الفعلي، واترك مساحة كافية لتغطية تكاليف الطلبات عند الحاجة، وحافظ على اتساق الإعدادات في جميع مكونات نظامك. تنطبق الأمثلة على خادم Nextcloud مُدار ذاتيًا باستخدام PHP؛ قد توفر خدمات الاستضافة المُدارة والحاويات والأجهزة مسارات تكوين مختلفة.
لماذا قد تفشل عملية تحميل ملف بحجم 2 جيجابايت؟
يشرح دليل إدارة Nextcloud الحالي أن عمليات التحميل الكبيرة قد تخضع لقيود تتعلق بإعدادات PHP وخادم الويب. في حالة التحميل المُجزأ، يُرسل المتصفح أو العميل أجزاءً يقوم Nextcloud بتجميعها؛ وقد لا تتحكم بعض توجيهات حجم الملف في PHP بهذه الطلبات، بينما تظل مهلة خادم الويب أو PHP قادرة على ذلك. كما يمكن أن يفرض الخادم الوكيل، أو جدار الحماية، أو وحدة التخزين الخلفية، أو حصة المستخدم، أو امتلاء القرص المؤقت، قيودًا إضافية. راجع دليل إدارة تحميل الملفات الكبيرة في Nextcloud ودليل مستخدم Nextcloud للتحميلات الكبيرة .
قد تعني عبارة "2 جيجابايت" أيضًا 2,000,000,000 بايت أو 2 جيجابايت (2,147,483,648 بايت). قد لا يتطابق الحد المعروض مع الحد الفعلي للبايتات تمامًا. سجّل الخطأ، وحجم الملف بالبايتات، وما إذا كان الخطأ قد حدث فورًا أم بعد بدء العملية. تساعد هذه التفاصيل في تحديد الطبقة التي يجب فحصها.
1. حدد الطبقة الأولى التي ترفض عملية التحميل
قبل تغيير الإعدادات، انتبه إلى طريقة تحميل الملف: واجهة Nextcloud على الويب، أو تطبيق مزامنة سطح المكتب أو الهاتف، أو تطبيق WebDAV. جرّب تحميل ملف أكبر قليلاً من الحد الأقصى السابق، ولكن تجنّب تحميل ملفات متعددة الجيجابايت بشكل متكرر أثناء استكشاف الأخطاء وإصلاحها. راجع نظرة عامة على إدارة Nextcloud وسجلاتها، وسجل أخطاء خادم الويب، وسجلات PHP-FPM أو Apache، وأي لوحة تحكم للخادم الوكيل أو الاستضافة وقت حدوث العطل.
- غالباً ما تشير استجابة HTTP 413 الفورية إلى وجود حد أقصى لحجم نص الطلب في خادم الويب أو الخادم الوكيل.
- يشير تحذير PHP بشأن تجاوز حجم الملف المسموح به إلى إعدادات تحميل PHP لطلب متعدد الأجزاء تقليدي.
- يشير النقل الذي يبدأ ولكنه يتوقف أو ينتهي بمهلة زمنية إلى مهلة الطلب، أو انقطاع الاتصال، أو ضغط الموارد.
- تعني رسالة الحصة الواضحة أن مساحة التخزين المتاحة للمستخدم في Nextcloud، وليس الحد الأقصى للتحميل على الخادم، هي العقبة.
هذه مجرد مؤشرات وليست تشخيصات قاطعة: يمكن للخادم الوكيل أن يحل محل خطأ في التطبيق، وتختلف سجلات النظام باختلاف بيئة النشر. قارن الطوابع الزمنية عبر الطبقات قبل تعديل الإعدادات.
2. تحديد حدود PHP لعمليات تحميل نماذج المتصفح
ابحث عن إعدادات PHP المستخدمة في عملية Nextcloud على الويب. في Debian أو Ubuntu، يوجد ملف PHP-FPM عادةً في المسار التالي /etc/php/<version>/fpm/php.ini: `/php/php`. أما Apache مع mod_php فيستخدم عادةً ملفًا منفصلاً apache2/php.ini. قد تختلف إعدادات سطر أوامر PHP، لذا فإن تعديل الملف المذكور php --iniوحده قد لا يُغير الموقع الإلكتروني. يُوضح دليل إعدادات PHP الخاص بـ Nextcloud سياق إعدادات جانب الخادم.
للوصول إلى حد أقصى قدره 5 جيجابايت، راجع هذه الإعدادات في تكوين PHP النشط للموقع الإلكتروني:
upload_max_filesize = 5G
post_max_size = 5G
max_input_time = 3600
max_execution_time = 3600
post_max_sizeيجب أن يكون حجم الملف على الأقل مساويًا لحجم الملف المطلوب upload_max_filesize؛ ويُعدّ تحديد كلا الحجمين لنفس الهدف نقطة انطلاق عملية لتحميل ملف واحد متعدد الأجزاء. القيم الزمنية المذكورة أعلاه هي أمثلة فقط، وليست ضمانًا لإتمام عملية النقل: اختر مدة زمنية تناسب عرض النطاق الترددي المتاح لديك وسياسة التشغيل. لا ترفع حجم ملف PHP memory_limitإلى 5 جيجابايت لمجرد أن حجم الملف 5 جيجابايت. تُشير وثائق PHP إلى أن حجم الملف max_input_timeالمطلوب يشمل الوقت المستغرق في استقبال بيانات التحميل، وأن سلوك التحميل يعتمد على التوجيهات ذات الصلة؛ راجع وثائق PHP الخاصة بمخاطر التحميل .
3. رفع حد طلبات خادم الويب
Nginx مع PHP-FPM
في قسم خادم Nginx النشط لـ Nextcloud، حدد حدًا أقصى لحجم نص الطلب أعلى من أكبر ملف تنوي قبوله. على سبيل المثال، بالنسبة لملف بحجم 5 جيجابايت:
client_max_body_size 5G;
ضعها في السياق المناسب http، serverمع locationتجنب استخدام قيمة أقل في كتلة أكثر تحديدًا. يوثق Nginx هذا التوجيه في مرجع الوحدة الأساسية . يتضمن مثال تثبيت Nginx الخاص بـ Nextcloud أيضًا إعدادات حجم التحميل ومهلة الانتظار. تحقق من صحة التكوين sudo nginx -tقبل إعادة تحميل Nginx.
أباتشي
تحقق مما إذا كان المضيف الظاهري النشط أو تكوين الدليل أو مجموعات التكوين المضمنة مُفعّلة LimitRequestBody. في إصدارات Apache التي يكون فيها الحد الأقصى الافتراضي أو الصريح أقل من هدفك، ارفعه إلى عدد البايتات المطلوب، أو استخدم 0خيار "بدون حد على مستوى Apache" فقط إذا كان ذلك مقبولًا في بيئة النشر الخاصة بك. تأكد من وضع التوجيه في سياق يسمح به إصدار Apache وتكوينه. يصف Apache سلوكه في وثائق LimitRequestBody . شغّل هذا الأمر apachectl configtestقبل إعادة تحميل الخدمة.
4. تحقق من الخوادم الوكيلة العكسية والحاويات والتخزين
إذا مرّت حركة البيانات عبر خادم Nginx آخر، أو موازن تحميل، أو لوحة تحكم استضافة، أو خادم وكيل أمان، فيجب أن تسمح حدود حجم البيانات ومهلة الانتظار الخاصة به بالتحميل. قد يُرفض الطلب قبل وصوله إلى Nextcloud. حدّث الطبقة المسؤولة عن هذا الإعداد فقط، ثم افحص سجلاتها ورمز الاستجابة. بالنسبة إلى Docker أو أي حاوية نشر أخرى، غيّر التكوين المُثبّت في الحاوية قيد التشغيل أو إعدادات البيئة المدعومة لتلك الصورة؛ قد لا تستخدم الحاوية ملف PHP الخاص بالمضيف على الإطلاق.
تستهلك عمليات التحميل الكبيرة موارد النظام. تأكد من وجود مساحة تخزين كافية على وحدة تخزين بيانات Nextcloud، وأن المجلد المؤقت لخادم PHP أو خادم الويب يستوعب حجم العمل. في حالة التحميل المُجزأ، قد تحتاج إلى مساحة مؤقتة أثناء تجميع الأجزاء؛ وقد تتطلب عمليات نشر تخزين الكائنات مساحة تخزين مؤقتة إضافية. خطط للتحميل المتزامن، وليس فقط لتحميل ملف واحد بأقصى حجم. راجع قسم Nextcloud الخاص بالمساحة المؤقتة وتحميل الملفات الكبيرة قبل رفع الحد الأقصى في بيئة عمل مزدحمة.
5. قم بتطبيق التغييرات والتحقق منها من خلال اختبار مضبوط
بعد اجتياز فحوصات التكوين، أعد تحميل أو تشغيل خدمات PHP-FPM وخادم الويب ذات الصلة لكي تقرأ الإعدادات المُحدَّثة. تختلف أسماء الخدمات الدقيقة باختلاف التوزيعة وإصدار PHP. تجنّب إعادة تشغيل خدمات الإنتاج غير ذات الصلة. ثمّ ارفع ملفًا يزيد حجمه قليلًا عن الحدّ السابق البالغ 2 جيجابايت - مثل ملف اختبار معروف بحجم 2.1 جيجابايت تقريبًا - باستخدام نفس العميل والمسار اللذين فشلا في الأصل. حافظ على حجم ملف الاختبار أقل من الحدّ الجديد، وراقب مساحة القرص المتاحة والسجلات وتقدّم عملية النقل.
يجب أن ينتهي الاختبار بنجاح دون أي خطأ في حجم الملف أو انتهاء مهلة HTTP، وأن يظهر الملف في مجلد Nextcloud المُحدد، وأن يكون حجمه معقولًا عند التحقق منه من جهاز المستخدم. بالنسبة للملفات المهمة، قارن قيمة التحقق (checksum) بين المصدر والوجهة إذا كان نظامك يدعم ذلك. لا يُعدّ وصول شريط التقدم إلى 100% دليلًا كافيًا على اكتمال تخزين الملف.
عندما لا يكون هذا الحل كافياً
- يعمل التحميل عبر الويب، لكن تطبيق سطح المكتب يفشل: راجع سلوك مهلة العميل والخادم الوكيل والخادم. تستخدم تطبيقات Nextcloud التحميلات المجزأة، لذا
upload_max_filesizeقد لا يؤدي تغيير إعدادات PHP وحدها إلى حل مشكلة طلب الجزء أو مهلة التجميع النهائي.
- يشير الخطأ إلى أن المستخدم قد نفدت مساحته: قم بتعديل حصة Nextcloud الخاصة بهذا المستخدم أو مساحة التخزين المجانية؛ لن يؤدي زيادة حد الطلب إلى إنشاء سعة.
- يحدث الفشل عند نفس عدد البايتات لكل عميل: ابحث عن وكيل مشترك، أو جدار حماية تطبيقات الويب، أو موفر استضافة، أو حد أقصى لخادم الويب، وقم بربط سجلاته بالطلب.
- تكتمل عمليات التحميل ولكنها تستهلك مساحة تخزين مؤقتة كبيرة جدًا: قلل من عمليات التحميل المتزامنة، وتأكد من وجود مساحة تخزين مؤقتة كافية، أو راجع سلوك التجزئة والتخزين الموثق لنظامك الخلفي.
يؤدي رفع حد التحميل إلى زيادة ما يمكن للمستخدمين إرساله إلى الخادم، لذا ينبغي ربطه بحصص محددة، ومراقبة مستمرة، ومساحة تخزين كافية، وضوابط وصول فعّالة. لا يوجد حد أقصى آمن عالميًا: يعتمد الحد الأقصى العملي على أبطأ حد في مسار الطلب وسعة الخادم ونظام التخزين.
مراجع