لإزالة تحذير Nextcloud "لم يتم تكوين PHP OPcache بشكل صحيح"، افتح التحذير كاملاً في إعدادات الإدارة ← نظرة عامة، ثم قم بزيادة حد OPcache المحدد في إعدادات PHP المستخدمة من قبل خادم الويب. أعد تشغيل خدمة PHP المعنية وتحقق من التحذير مرة أخرى؛ قد لا يؤدي تعديل إعدادات PHP من سطر الأوامر وحده إلى تغيير ما يستخدمه Nextcloud.
على سبيل المثال، إذا أبلغ Nextcloud بأن مخزن النصوص المخزنة مؤقتًا يكاد يكون ممتلئًا، فإن رفع حجمه opcache.interned_strings_bufferمن 16 إلى 32 ميجابايت يُعد تعديلًا أوليًا مناسبًا عندما يكون لدى الخادم ذاكرة وصول عشوائي كافية. أما التحذيرات الأخرى المتعلقة بالبرامج النصية المخزنة مؤقتًا أو الذاكرة المشتركة فتتطلب إعدادات مختلفة.
لماذا يعرض Nextcloud تحذير OPcache هذا؟
يخزن OPcache بايت كود PHP المُجمّع في ذاكرة مشتركة، مما يقلل من حجم عملية التجميع اللازمة لطلبات الويب المتكررة. كما أنه يحجز مساحة للسلاسل النصية المُخزّنة، مما يسمح لـ PHP بإعادة استخدام السلاسل النصية المتطابقة. هذه السعات حدود منفصلة، لذا فإن توسيع إحداها لا يحل بالضرورة مشكلة التنبيه المتعلق بالأخرى.
بحسب وثائق ضبط خادم Nextcloud 35 ، تُصدر لوحة التحكم تنبيهًا عند تجاوز حد حجم ذاكرة التخزين المؤقت OPcache نسبة 90% من سعتها المخصصة. وقد تشير الرسالة تحديدًا إلى امتلاء مخزن السلاسل النصية الداخلي تقريبًا، أو محدودية عدد البرامج النصية المخزنة مؤقتًا، أو عدم كفاية الذاكرة المشتركة. وتُحدد هذه التفاصيل طريقة الحل.
يتطلب Nextcloud أيضًا ذلك opcache.save_comments=1، لأنه يعتمد على حفظ تعليقات كود PHP. لذا، فإن تعطيل إضافة OPcache أو تعطيل حفظ التعليقات يُعد مشكلة في الإعدادات، وليس مجرد مشكلة في حجم ذاكرة التخزين المؤقت.
1. تحديد الوضع الذي يحتاج إلى اهتمام
سجّل الدخول كمسؤول، ثم انتقل إلى إعدادات الإدارة ← نظرة عامة ، واقرأ تحذير OPcache كاملاً. دوّن التوجيه المحدد إن وُجد. لا تفترض أن كل تحذير OPcache يعني أن حجم مخزن السلاسل النصية المُخزّنة غير كافٍ.
- مخزن السلاسل النصية الداخلي ممتلئ تقريبًا: تحقق
opcache.interned_strings_buffer.
- ذاكرة OPcache المشتركة ممتلئة تقريبًا: تحقق
opcache.memory_consumption.
- البرامج النصية أو المفاتيح المخزنة مؤقتًا تقترب من الحد الأقصى: تحقق
opcache.max_accelerated_files.
- تم تعطيل OPcache أو لم يتم حفظ التعليقات: تحقق
opcache.enableمن ذلك opcache.save_comments.
2. ابحث عن إعدادات PHP التي تُشغّل Nextcloud
في خوادم دبيان أو أوبونتو التي تستخدم PHP-FPM، يتم عادةً تنظيم إعدادات PHP حسب إصدار PHP وواجهة برمجة تطبيقات الخادم. على سبيل المثال، قد يقرأ PHP 8.3 FPM الملفات الموجودة في المسار المحدد /etc/php/8.3/fpm/conf.d/، بينما قد تستخدم وحدة PHP الخاصة بـ Apache المسار المحدد /etc/php/8.3/apache2/conf.d/.
لمعرفة خدمات PHP-FPM الموجودة على مضيف systemd، قم بتشغيل الأمر التالي:
systemctl list-units --type=service 'php*-fpm.service'
تحقق من ملفات OPcache المناسبة، مع استبدال إصدار PHP المثبت لديك:
sudo ls -l /etc/php/8.3/fpm/conf.d/*opcache*
sudo grep -R 'opcache\.' /etc/php/8.3/fpm/conf.d/
إذا لم يتم العثور على أي ملفات، فافحص ملف main.org php.iniوملف package.json الخاص بتوزيعتك. php --iniيُفيد هذا الأمر في تحديد إعدادات PHP الخاصة بواجهة سطر الأوامر ، ولكن قد تُحمّل واجهة سطر الأوامر وPHP-FPM إعدادات مختلفة.
بالنسبة لـ Docker أو Nextcloud All-in-One، افحص إعدادات PHP داخل حاوية Nextcloud واستخدم طريقة تكوين دائمة مدعومة. /etc/phpعادةً لا يؤدي تعديل ملفات المضيف إلى تكوين PHP داخل الحاوية؛ كما يمكن التراجع عن تعديل ملف الحاوية المُنشأ بإعادة تشغيله.
3. زيادة الحد المُبلغ عنه دون تغيير الإعدادات غير ذات الصلة
قم بعمل نسخة احتياطية من ملف الإعدادات ذي الصلة قبل إجراء أي تغيير. في تثبيت PHP-FPM التقليدي على أنظمة Debian/Ubuntu، يتمثل أحد الحلول العملية في إضافة ملف محلي بديل ضمن conf.dمجلد FPM الخاص بإصدار PHP. تأكد من تحميل هذا المجلد فعليًا بواسطة تثبيت PHP-FPM قبل المتابعة.
بالنسبة لمثال مخزن السلاسل النصية الداخلي ، قم بإنشاء أو تعديل تجاوز محلي مثل /etc/php/8.3/fpm/conf.d/99-nextcloud-opcache.ini:
; Example for a warning about interned strings
opcache.interned_strings_buffer=32
هنا، 32تعني 32 ميجابايت، وليس 32 بايت. حدد القيمة النهائية بناءً على الاستخدام الفعلي وذاكرة الوصول العشوائي المتاحة.
إذا كان التحذير يشير إلى حد مختلف، فاستخدم المثال المقابل بدلاً من إضافة الحدود الثلاثة جميعها بشكل أعمى:
; Example only: larger shared bytecode cache
opcache.memory_consumption=256
; Example only: allow more cached script keys
opcache.max_accelerated_files=20000
تُقاس القيم opcache.memory_consumptionبالميغابايت، بينما opcache.max_accelerated_filesيُحدد حدًا أقصى لمفتاح البرنامج النصي. يشرح مرجع تكوين PHP OPcache الرسمي وحدات القياس والقيم الافتراضية وإمكانية تغييرها.
عندما يشير التحذير إلى تعطيل ذاكرة التخزين المؤقت OPcache أو وجود تعليقات مفقودة بدلاً من السعة، تحقق من هذه الإعدادات بدلاً من ذلك:
opcache.enable=1
opcache.save_comments=1
لا تقم بإيقاف التشغيل opcache.validate_timestampsأو إطالة مدة التشغيل بشكل كبير opcache.revalidate_freqلمجرد تجاهل هذا التحذير. تحذر Nextcloud من أن تأخير إعادة التحقق من صحة ذاكرة التخزين المؤقت قد يمنع تطبيق تغييرات التكوين والترقية على الفور.
4. تطبيق التكوين الجديد
بالنسبة لخادم مثال يعمل بنظام PHP 8.3 من خلال PHP-FPM، قم أولاً بالتحقق من صحة تكوين الخدمة، ثم أعد تشغيل الخدمة المطابقة خلال فترة صيانة قصيرة:
sudo php-fpm8.3 -t
sudo systemctl restart php8.3-fpm
استبدل 8.3الإصدار المُثبّت من PHP-FPM بالإصدار المُثبّت، وتأكد من اسم الملف التنفيذي واسم الخدمة قبل تشغيل أيٍّ من الأمرين. إعادة التشغيل تُقاطع الطلبات التي يُعالجها هذا المُجمّع. في Apache mod_php، تكون الخدمة المعنية هي Apache وليس PHP-FPM؛ بالنسبة للحاويات، طبّق إجراء إعادة التشغيل أو إعادة الإنشاء الموثّق الخاص بنشرك مع الحفاظ على الإعدادات.
إذا فشلت الخدمة في إعادة التشغيل، فقم باستعادة التكوين الاحتياطي الخاص بك وافحص سجل أخطاء PHP-FPM أو خادم الويب.
5. إذا استمر التحذير، فتحقق من إعدادات PHP الخاصة بالويب
أعد تحميل إعدادات الإدارة ← نظرة عامة بعد إعادة تشغيل خوادم PHP. إذا استمر التحذير نفسه، فتأكد من تحميل التوجيه المُعدَّل فعليًا بواسطة بيئة تشغيل PHP الخاصة بالويب ، وليس فقط بواسطة واجهة سطر الأوامر. ابحث عن ملف يتم تحميله لاحقًا .iniأو عن تجاوز لمجمع PHP-FPM يحل محل قيمتك.
على خادم تتحكم به، يمكنك فحص قيم PHP الخاصة بالويب مؤقتًا باستخدام نقطة نهاية تشخيصية ذات وصول محدود للغاية ini_get()ووظيفة PHP. تجنب ترك أي phpinfo()صفحة عامة متاحة على الإنترنت، فقد تكشف عن بيئة التشغيل، والمسارات، والوحدات، وتفاصيل التكوين الحساسة الأخرى. قم بإزالة أي نقطة نهاية تشخيصية فورًا بعد التحقق.
للحصول على تنبيه مستمر بشأن حجم الذاكرة، راقب استخدام OPcache الفعلي في ظل حركة مرور عادية بدلاً من مضاعفة القيم بشكل متكرر. توضح وثائق PHPopcache_get_status() إحصائيات الذاكرة، والسلاسل النصية المُخزّنة، والبرامج النصية المُخزّنة مؤقتًا المتاحة لعملية PHP قيد التشغيل.
تأتي صورة Docker الرسمية لـ Nextcloud وعمليات النشر المتكاملة (All-in-One) بإعدادات PHP افتراضية خاصة بها؛ لذا لا تفترض أن التعديلات على مستوى المضيف أو القيم الموصى بها من تثبيت آخر ستظل سارية. راجع مستودع Docker الرسمي لـ Nextcloud أو مستودع All-in-One الرسمي لمعرفة نموذج التكوين المتوافق مع عملية النشر الخاصة بك.
تأكد من نجاح الإصلاح
ارجع إلى إعدادات الإدارة ← نظرة عامة، وتأكد من اختفاء تحذير OPcache المحدد. افتح وأعد تحميل بعض صفحات Nextcloud للتأكد من استمرار استجابة التطبيق بشكل طبيعي. إذا عاد التحذير بعد الاستخدام العادي، فأعد التحقق من نفس الحد المُقاس وإعدادات PHP الخاصة بالويب؛ الهدف هو ترك مساحة كافية دون تخصيص ذاكرة غير ضرورية لـ OPcache.