إصلاح تحذير حد ذاكرة PHP في Nextcloud

لإزالة تحذير تجاوز حد ذاكرة PHP في Nextcloud، اضبط قيمة ` memory` memory_limitعلى 512 ميجابايت على الأقل 512Mفي إعدادات PHP المستخدمة من قِبل خادم الويب، ثم أعد تشغيل خدمة PHP المعنية أو أعد تحميلها. يوصي دليل إدارة Nextcloud الحالي والمستقر بتخصيص 512 ميجابايت على الأقل لهذا الإعداد. السبب الأكثر شيوعًا لبقاء التحذير بعد تعديل ملف هو أن خادم الويب يستخدم إعدادات PHP مختلفة عن تلك المستخدمة في تثبيت PHP عبر سطر الأوامر.

اختر الإجراء المناسب لبيئة النشر الخاصة بك: Apache مع mod_php، أو Apache أو Nginx مع PHP-FPM، أو حاوية، أو حزمة Nextcloud مُدارة. لا تُعدّل قيمة عشوائية مُحددة للمضيف php.iniوتفترض أن جميع بيئات النشر تستخدمها. تحقق من النتيجة من صفحة نظرة عامة على إعدادات Nextcloud، والتي تعكس تكوين تطبيق الويب.

ماذا يعني هذا التحذير؟

يمثل هذا memory_limitالحد الأقصى للذاكرة التي يمكن لبرنامج PHP واحد تخصيصها. وهو ليس إجمالي ذاكرة الوصول العشوائي (RAM) المحجوزة لـ Nextcloud، ولا يزيد من الذاكرة الفعلية المتاحة للخادم. ينص دليل Nextcloud على ضرورة تخصيص 512 ميجابايت على الأقل لهذا التوجيه. وتوضح متطلبات النظام أن احتياجات ذاكرة الخادم الفعلية تختلف باختلاف المستخدمين والتطبيقات والملفات والنشاط؛ وتوصي بتخصيص 512 ميجابايت على الأقل من ذاكرة الوصول العشوائي لكل عملية PHP، مع حد أدنى قدره 128 ميجابايت.

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

ما هو إعداد PHP الذي يجب عليك تعديله؟

حدد أولاً كيفية تشغيل Nextcloud باستخدام PHP. يُظهر فحص طرفي مثل ` php --ininpm install` إعدادات سطر الأوامر (CLI). قد تستخدم طلبات الويب الخاصة بـ Nextcloud وحدة Apache منفصلة أو خدمة PHP-FPM مع php.iniتجاوز إعدادات مجموعة أخرى. يُشير Nextcloud تحديدًا إلى أن PHP الخاص بالويب وPHP الخاص بسطر الأوامر قد يستخدمان ملفات تكوين مختلفة.

تتضمن المواقع النموذجية في الأنظمة المشتقة من دبيان /etc/php/8.x/apache2/php.iniملفات PHP الخاصة بوحدة أباتشي و /etc/php/8.x/fpm/php.iniPHP-FPM. يختلف إصدار PHP الفعلي وأسماء المجلدات. تستخدم التوزيعات الأخرى مسارات مختلفة، مثل مسار مشترك /etc/php.ini. هذه أمثلة فقط؛ استخدم مدير الحزم، وإعدادات الخدمة، وبيئة تشغيل PHP لتحديد موقع الملف النشط.

لفحص إعدادات واجهة سطر الأوامر، قم بتشغيل ما يلي:

php --ini
php -i | grep -i '^memory_limit'

تُفيد هذه الأوامر في المهام المُجدولة التي تستدعي PHP من سطر الأوامر، لكنها لا تُثبت أن عملية Nextcloud المُتاحة للمتصفح تستخدم القيمة نفسها. تجنّب ترك phpinfo()صفحة عامة على الخادم، فقد تكشف عن المسارات والوحدات النمطية وتفاصيل وقت التشغيل.

كيف يمكنك تحديد الحد الأقصى لـ Apache أو PHP-FPM؟

قم بعمل نسخة احتياطية من ملف الإعدادات النشط قبل تعديله. في الملف الصحيح php.ini، ابحث عن السطر الحالي memory_limitوقم بتعيينه إلى 512Mالقيمة المحددة أو قيمة أعلى مناسبة لحجم العمل لديك.

memory_limit = 512M

استخدم إعدادًا واحدًا نشطًا بدلًا من إضافة أسطر مكررة في نهاية عدة ملفات. يمكن لمجموعة PHP-FPM أيضًا تحديد قيم لعمالها، لذا تحقق من إعدادات المجموعة إذا php.iniلم تُفعّل القيمة. تدعم بعض عمليات نشر PHP إعدادًا لكل دليل .user.ini؛ ويعتمد تفعيل هذا الإعداد على إعدادات الخادم، ويجب التأكد من ذلك مع المسؤول.

أباتشي يستخدم mod_php

عدّل ملف الإعدادات php.iniالذي يستخدمه Apache، ثم احفظه، وأعد تشغيل Apache ليتم إعادة تحميل إعدادات الوحدة. تختلف أسماء الخدمات. في Debian أو Ubuntu، يكون اسم الخدمة عادةً `<اسم الخدمة>` apache2؛ وفي أنظمة RHEL، يكون عادةً `<اسم httpdالخدمة>`. استخدم اسم الخدمة المناسب لنظام التشغيل الخاص بك ولإجراءات الصيانة.

sudo systemctl restart apache2

استبدل هذا الاسم apache2إذا كانت توزيعتك تستخدم اسم وحدة مختلفًا. إذا تم تشغيل Nextcloud عبر PHP-FPM بدلاً من mod_php، فلن تؤدي إعادة تشغيل Apache وحدها إلى إعادة تحميل عمال PHP.

أباتشي أو إنجينكس باستخدام PHP-FPM

عدّل إعدادات PHP-FPM المستخدمة فعليًا من قِبل الموقع. بعد حفظ التغييرات، أعد تشغيل خدمة PHP-FPM المطابقة أو أعد تحميلها. قد تتضمن وحدتها إصدار PHP، على سبيل المثال php8.3-fpm، أو قد تستخدم اسمًا آخر خاصًا بالمورد.

sudo systemctl restart php8.3-fpm

استخدم اسم الخدمة الصحيح لإصدار PHP المُثبّت لديك. يُمرّر Nginx طلبات PHP إلى FPM، لذا يتطلب تغيير إعدادات PHP عادةً تطبيق التغيير على FPM؛ إعادة تشغيل Nginx وحدها لا تُعيد تحميل حد ذاكرة PHP. إذا كان تكوين مجموعة PHP-FPM لديك يُلغي الإعدادات الافتراضية memory_limit، فعدّل إعدادات المجموعة أو أزل الإلغاء، ثم أعد تشغيل المجموعة.

ماذا لو تم تشغيل Nextcloud في Docker أو AIO أو Snap أو حزمة أخرى؟

استخدم آلية التكوين الخاصة بطريقة التثبيت هذه. عادةً لا يؤدي تعديل ملفات PHP على المضيف إلى تغيير بيئة تشغيل PHP داخل الحاوية أو الحزمة المعزولة. توثق صورة Docker الرسمية لـ Nextcloud PHP_MEMORY_LIMITمتغير البيئة، وقيمته الافتراضية غير مُحددة 512Mفي وثائق الصورة الحالية. عيّنه في ملف Compose أو تكوين الحاوية، ثم أعد إنشاء حاوية التطبيق أو أعد تشغيلها وفقًا لإجراءات النشر.

environment:
  PHP_MEMORY_LIMIT: 512M

لا تقم بنسخ هذا الإعداد إلى جميع أنواع التثبيت. يشير دليل Nextcloud إلى أن بيئات التشغيل الجاهزة، مثل AIO وSnap وNCP وCommunity Docker، تأتي مُهيأة مسبقًا بـ PHP، ويُوجه المسؤولين إلى التعليمات الخاصة بكل حزمة لتخصيصها. في هذه الحالات، استخدم الواجهة أو الوثائق المُعتمدة لتلك الحزمة. كما يُمكن أن تُلغي عمليات ربط وحدات التخزين الدائمة والتكوين المُنشأ أي تعديل يدوي لمرة واحدة.

كيف يمكنك التأكد من إصلاح التحذير؟

  1. قم بتطبيق التغيير على إعدادات PHP الخاصة بالويب وأعد تشغيل أو أعد تحميل خدمة الويب/PHP ذات الصلة.
  2. قم بتسجيل الدخول إلى Nextcloud كمسؤول وافتح الإعدادات > الإدارة > نظرة عامة .
  3. قم بتحديث الصفحة وراجع تحذيرات الإعدادات. تأكد من اختفاء تحذير حد ذاكرة PHP.
  4. قم بتشغيل عملية نموذجية أدت سابقًا إلى ظهور التحذير، مثل مهمة التطبيق المتأثرة، وقم بمراجعة سجلات Nextcloud و PHP بحثًا عن رسائل استنفاد الذاكرة.

إذا كنت تُشغّل أيضًا مهام Nextcloud في الخلفية عبر cron النظامي، فتحقق من إعدادات PHP في واجهة سطر الأوامر بشكل منفصل. يمكن إزالة التحذير الظاهر على الويب بينما لا تزال مهام واجهة سطر الأوامر تستخدم حدًا أدنى. تأكد من قيمة واجهة سطر الأوامر باستخدام الأمر المناسب php --iniلنفس php -iملف PHP الثنائي المستخدم في أمر cron.

متى يجب رفع القيمة فوق 512 مليون؟

لا تقم برفع هذا الحد إلا عند اختفاء التحذير، ولكن لا يزال عبء العمل الموثق يصل إلى حد PHP، أو عندما تتطلب إرشادات التطبيق المدعومة المزيد. تحقق أولاً من ذاكرة الخادم الفعلية، وعدد عمال PHP-FPM، وذاكرة قاعدة البيانات، والخدمات الأخرى. بما أن PHP يطبق الحد لكل نص برمجي، فقد تستخدم عدة عمال مشغولين ذاكرة كبيرة في الوقت نفسه. حدد حدًا مُقاسًا يتناسب مع ميزانية ذاكرة المضيف بدلاً من استخدام `public` -1، الذي توثقه PHP بأنه لا يوجد له حد للذاكرة.

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

فحوصات سريعة حسب الأعراض

  • يبقى التحذير بعد تعديل ملف php.ini: تحقق مما إذا كنت قد عدلت ملف CLI بدلاً من ملف Apache/FPM، أو ما إذا كان إعداد مجموعة يتجاوزه.
  • يختفي التحذير ولكن مهمة cron لا تزال تفشل: تحقق من ملف PHP الثنائي الخاص بواجهة سطر الأوامر وتكوينه المنفصل.
  • يقوم خادم الويب بإرجاع خطأ بعد إعادة التشغيل: افحص حالة خادم الويب أو خدمة PHP-FPM وسجلاتها، وقم باستعادة النسخة الاحتياطية إذا تسبب تغيير التكوين في فشل بدء التشغيل.
  • يختفي التحذير ولكن المضيف ينفد من ذاكرة الوصول العشوائي (RAM): قلل التزامن، أو أضف ذاكرة، أو حدد العملية التي تستخدم الذاكرة قبل زيادة حد PHP بشكل أكبر.
  • إذا كنت تستخدم حاوية أو حزمة جاهزة للاستخدام: قم بتغيير إعدادات PHP المدعومة في الحزمة بدلاً من ملف php.ini الخاص بالمضيف.

المراجع الرسمية

اترك تعليقاً

إصلاح أخطاء التشفير التام بين الأطراف (E2EE) في عنصر الويب "فشل في فك تشفير الحدث"

إصلاح أخطاء التشفير التام بين الأطراف (E2EE) في عنصر الويب "فشل في فك تشفير الحدث"

قم باستكشاف أخطاء فك تشفير Element Web وإصلاحها عن طريق التحقق من الجهاز، ونسخ المفاتيح الاحتياطية، ومفاتيح الاسترداد، ومفاتيح الغرف المفقودة - دون المخاطرة بسجل الرسائل.

كيفية إعداد وتفعيل المصادقة الثنائية (2FA) في Nextcloud

كيفية إعداد وتفعيل المصادقة الثنائية (2FA) في Nextcloud

تعرف على كيفية تمكين موفري المصادقة الثنائية في Nextcloud، وفرض المصادقة الثنائية للمستخدمين أو المجموعات، وإعداد عملية الاسترداد، والتحقق من عمليات تسجيل الدخول وتطبيقات العميل.

كيفية تقييد إعادة توجيه البريد الإلكتروني الصادر حسب عنوان IP في زيمبرا

كيفية تقييد إعادة توجيه البريد الإلكتروني الصادر حسب عنوان IP في زيمبرا

قم بتقييد إعادة توجيه البريد الصادر غير المصادق عليه في Zimbra إلى عناوين IP الموثوقة باستخدام zimbraMtaMyNetworks. تعرّف على كيفية فحص قائمة السماح وتحديثها وإعادة تحميلها والتحقق منها بأمان.

إصلاح تحذير حد ذاكرة PHP في Nextcloud

إصلاح تحذير حد ذاكرة PHP في Nextcloud

قم بتعيين قيمة memory_limit لـ PHP إلى 512 ميجابايت على الأقل لـ Nextcloud، وابحث عن تكوين PHP الصحيح للويب، وأعد تشغيل Apache أو PHP-FPM، وتحقق من إزالة التحذير.

كيفية إعداد خادم Matrix Coturn TURN/STUN للمكالمات الصوتية والمرئية

كيفية إعداد خادم Matrix Coturn TURN/STUN للمكالمات الصوتية والمرئية

قم بإعداد Coturn مع Synapse لإجراء مكالمات Matrix WebRTC. قم بتكوين بيانات الاعتماد المشتركة، وNAT، ومنافذ جدار الحماية، وخيارات TLS، وميّز بين TURN القديم وMatrixRTC وLiveKit.

How to Configure Nextcloud Mail App with OAuth2 Authentication

How to Configure Nextcloud Mail App with OAuth2 Authentication

Configure Nextcloud Mail with OAuth2 for Gmail or Microsoft 365, verify IMAP/SMTP access, troubleshoot redirect issues, and know the limits.

كيفية إصلاح تحذير جلسة "تعذر التحقق من الهوية" في Element

كيفية إصلاح تحذير جلسة "تعذر التحقق من الهوية" في Element

قم بإصلاح تحذير جلسة Element "تعذر التحقق من الهوية" عن طريق التحقق باستخدام جهاز موثوق آخر أو مفتاح استرداد، وتعرف على متى تكون إعادة التعيين آمنة.

نقل صناديق بريد كوبانو إلى جرومونيو أو زاماد: اختر المسار الصحيح

نقل صناديق بريد كوبانو إلى جرومونيو أو زاماد: اختر المسار الصحيح

قارن بين عملية ترحيل البيانات إلى Kopano و grommunio و Zammad. تعرّف على بيانات صناديق البريد التي يمكن لكل مسار الاحتفاظ بها، وكيفية تجربة النتائج والتحقق منها، ومتى يكون استخدام IMAP أو الاستيراد المخصص مناسبًا.

كيفية نقل مجلد بيانات Nextcloud بأمان إلى قرص صلب خارجي

كيفية نقل مجلد بيانات Nextcloud بأمان إلى قرص صلب خارجي

انقل مجلد بيانات Nextcloud إلى قرص صلب خارجي دون الإخلال بمراجع الملفات. استخدم النسخ الاحتياطية، والربط الدائم، وrsync، والأذونات، والروابط الرمزية بأمان.

حل مشكلة عدم تشغيل مهام Cron في Nextcloud تلقائيًا باستخدام systemd

حل مشكلة عدم تشغيل مهام Cron في Nextcloud تلقائيًا باستخدام systemd

قم باستكشاف أخطاء مؤقتات Cron الخاصة بنظام Nextcloud على Ubuntu وإصلاحها عن طريق التحقق من مستخدم الخدمة ومسارات PHP و Nextcloud وتفعيل المؤقت وسجل تشغيل المهمة.