الرئيسية
» مسؤول الشبكة
»
إصلاح تحذير Nextcloud "لم يتم تكوين PHP OPcache بشكل صحيح"
إصلاح تحذير Nextcloud "لم يتم تكوين PHP OPcache بشكل صحيح"
إذا أبلغ Nextcloud بأن "ذاكرة التخزين المؤقت PHP OPcache غير مُهيأة بشكل صحيح" ، فإن الحل الصحيح ليس نسخ ولصق كتلة كبيرة من التعليمات البرمجية من منشور قديم في منتدى. حدد أولاً حدّ أو إعداد ذاكرة التخزين المؤقت الذي يعترض عليه Nextcloud، ثم غيّر إعدادات PHP المستخدمة فعليًا من قِبل خادم الويب الخاص بك.
في وثائق إدارة Nextcloud 35 الحالية، يُعامل OPcache كطبقة أداء PHP مهمة. تشير Nextcloud إلى أن لوحة التحكم الخاصة بها تُظهر تحذيرًا عند تجاوز حجم OPcache 90% من سعته المخصصة. كما تتطلب الحفاظ على تعليقات التعليمات البرمجية المخزنة مؤقتًا. يوثق دليل PHP التوجيهات ذات الصلة وقيمها الافتراضية. تُتيح لك هذه المعلومات طريقة أكثر أمانًا لضبط OPcache: زيادة الموارد المحدودة فقط، والحفاظ على السلوك المطلوب مُفعلاً، وتجنب التغييرات التي تُعقّد التحديثات إلا إذا كان لديك سبب وجيه لذلك.
ينبغي التعامل مع التحذير كدليل تشخيصي: حدد قيد OPcache المحدد قبل تغيير حدود الذاكرة أو عدد الملفات.
ما الذي يعنيه تحذير Nextcloud OPcache عادةً
يخزن OPcache بايت كود PHP المُجمّع في ذاكرة مشتركة، مما يُغني PHP عن تحليل وتجميع ملفات التطبيق نفسها في كل طلب. تُعرّف Nextcloud هذه الميزة بأنها مُحسّنة للأداء، وقد دمجت PHP مكتبة Zend OPcache في بنيتها الأساسية منذ الإصدار 5.5.
قد يظهر التحذير لأكثر من سبب. من أكثر الأسباب شيوعًا: اقتراب سعة ذاكرة التخزين المؤقت OPcache من الامتلاء، أو تعطيلها لواجهة برمجة تطبيقات الويب SAPI، أو تغيير سلوك مطلوب مثل حفظ التعليقات. ينص دليل ضبط Nextcloud الحالي على ظهور تحذير بشأن الحجم عندما يتجاوز حد حجم ذاكرة التخزين المؤقت OPcache 90% من سعتها المخصصة، ويشترط ذلك صراحةً opcache.save_comments = 1.
اختر الحل بناءً على التحذير، وليس بناءً على حل واحد يناسب الجميع.
الموقف
أفضل فرصة أولى
التنازل عن ميزة ممن أجل الحصول على أخرى
تجاوزت ذاكرة OPcache عتبة التحذير الخاصة بـ Nextcloud
زيادة opcache.memory_consumptionمعتدلة
يستخدم المزيد من ذاكرة الوصول العشوائي المشتركة، ولكنه يقلل من تغيير ذاكرة التخزين المؤقت
السلاسل المخزنة ممتلئة تقريبًا
يزيدopcache.interned_strings_buffer
يستهلك ذاكرة مشتركة إضافية؛ ولا يُحقق رفع الحدود غير ذات الصلة أي فائدة.
مساحات تخزين الملفات/البرامج النصية المخزنة مؤقتًا تقترب من الامتلاء
يزيدopcache.max_accelerated_files
يستهلك جدول التجزئة الأكبر حجمًا ذاكرة أكبر
تم تعطيل OPcache
تم ضبط opcache.enable=1إعدادات PHP للويب
الوضع الطبيعي والموصى به لـ Nextcloud؛ تحقق من صحة SAPI
opcache.save_commentsكان معاقًا
تعيينopcache.save_comments=1
لا يوجد سبب وجيه خاص بـ Nextcloud لتعطيله؛ يتطلب Nextcloud الاحتفاظ بالتعليقات
تُحدد لغة PHP حاليًا قيمًا افتراضية تبلغ 128 ميجابايت لـ opcache.memory_consumption، و8 ميجابايت لـ opcache.interned_strings_buffer، و10000 ميجابايت لـ opcache.max_accelerated_files. هذه القيم الافتراضية هي نقاط مرجعية، وليست أهدافًا عامة لـ Nextcloud. قد يكون خادم شخصي صغير مناسبًا لهذه القيم، بينما قد يحتاج نظام أكبر يحتوي على العديد من التطبيقات إلى مساحة أكبر.
الخطوة 1: تأكد من إعدادات PHP التي يستخدمها Nextcloud فعليًا
هذه الخطوة تمنع العديد من محاولات الإصلاح الفاشلة. تشير وثائق Nextcloud إلى أن خادم الويب وواجهة سطر الأوامر PHP يمكنهما تحميل ملفات تكوين مختلفة. في أنظمة Debian وUbuntu، تشمل المسارات الشائعة ما يلي /etc/php/<version>/fpm/php.ini: /etc/php/<version>/apache2/php.iniو و /etc/php/<version>/cli/php.ini.
قم بتشغيل الأمر php --iniلعرض إعدادات واجهة سطر الأوامر، ولكن لا تفترض أنها نفس الملفات المستخدمة من قِبل PHP-FPM أو Apache. بالنسبة لواجهة برمجة تطبيقات الويب (SAPI)، استخدم phpinfo()صفحة مؤقتة فقط إذا كان بإمكانك حمايتها وإزالتها فورًا، أو افحص إعدادات مجموعة/خدمة PHP-FPM وملفات الوحدات النمطية الخاصة بالتوزيعة.
التوصية: إذا كان Nextcloud يعمل خلف Nginx أو Apache مع PHP-FPM، فعدّل إعدادات OPcache الخاصة بـ FPM. إذا كان Apache يستخدم mod_php، فعدّل إعدادات PHP الخاصة بـ Apache. حافظ على توافق إعدادات سطر الأوامر (CLI) عندما تتطلب العمليات الخلفية نفس السلوك، ولكن تذكر أن تحذير المتصفح ناتج عن مسار طلب الويب.
الخطوة الثانية: تعديل أصغر مجموعة من توجيهات OPcache التي تحل المشكلة
قم بتعديل إعدادات OPcache المستخدمة بواسطة واجهة برمجة تطبيقات الويب (SAPI). قم بزيادة الموارد المقيدة فقط بدلاً من نسخ إعدادات مسبقة كبيرة الحجم بشكل أعمى.
يُعرض أدناه مثالٌ مُتحفظ لخادمٍ متوسط الإمكانيات. اعتبر القيم العددية نقاط انطلاق، وليست ضمانات.
إذا أشار Nextcloud تحديدًا إلى أن ذاكرة OPcache تقترب من الامتلاء، فإن زيادة حجمها من 128 ميجابايت إلى 256 ميجابايت تُعدّ زيادةً معقولةً عند توفر ذاكرة وصول عشوائي (RAM) كافية على الخادم. أما إذا كان التحذير يشير إلى سلاسل نصية مُخزّنة داخليًا أو نصوص برمجية مُخزّنة مؤقتًا، فيُفضّل زيادة هذا الحد بدلًا من زيادة حجم الذاكرة فقط. على خادم افتراضي خاص (VPS) ذي ذاكرة محدودة، قد يؤدي الانتقال مباشرةً إلى 512 ميجابايت إلى تقليل ذاكرة الوصول العشوائي المتاحة لعمال PHP-FPM، وقاعدة البيانات، وRedis، ونظام التشغيل.
ماذا عن إعدادات إعادة التحقق؟
يشير دليل ضبط Nextcloud الحالي إلى أن PHP يتحقق افتراضيًا من وجود تغييرات في البرامج النصية المخزنة مؤقتًا كل ثانيتين، ولا يُوصي بتغيير هذا الإعداد الافتراضي للجميع. opcache.revalidate_freqقد يُقلل رفع مستوى التحقق من نظام الملفات من عمليات التحقق، ولكن على حساب الأداء: قد تستغرق ترقيات التطبيقات وتعديلاتها config.phpوقتًا أطول للظهور. يُعد تعطيل التحقق من الطابع الزمني بالكامل إجراءً أكثر صرامة، وقد يُبقي التعليمات البرمجية القديمة نشطة حتى يتم مسح ذاكرة التخزين المؤقت OPcache يدويًا أو إعادة تشغيل PHP.
بالنسبة لمعظم المسؤولين الذين يحاولون فقط إزالة التحذير، اتركوا opcache.validate_timestampsالنظام opcache.revalidate_freqيعمل بشكل طبيعي ما لم تفهموا آلية النشر. يحذر Nextcloud تحديدًا من أن السلوك غير المعتاد بعد التحديثات قد ينتج عن وجود رمز مخزن مؤقتًا قديم عند تغيير عملية إعادة التحقق.
الخطوة 3: أعد تشغيل خدمة PHP الصحيحة
بعد تعديل ملف INI، أعد تشغيل عملية PHP التي تُشغّل Nextcloud. ومن الأمثلة الشائعة systemctl restart php8.2-fpmعلى ذلك PHP-FPM أو إعادة تشغيل Apache عند استخدام mod_php. استبدل رقم الإصدار واسم الخدمة بما يُشغّله نظامك فعليًا.
تزداد أهمية هذا الأمر إذا قمت بتغيير سلوك إعادة التحقق. تضمن إعادة تشغيل الخدمة الصحيحة تحميل إعدادات OPcache الجديدة، وتزيل أي لبس بشأن التعليمات البرمجية القديمة.
الخطوة الرابعة: تحقق من القيم، ولكن تحقق أيضًا من واجهة برمجة تطبيقات الويب (SAPI).
تعتبر عمليات التحقق من واجهة سطر الأوامر مفيدة للعثور على ملفات INI وتأكيد بناء الجملة، ولكن يمكن لواجهة برمجة تطبيقات الويب (SAPI) تحميل تكوين مختلف.
تتضمن عمليات التحقق المفيدة عبر سطر الأوامر ما يلي:
php --ini
php -i | grep -i opcache
تؤكد هذه الأوامر أن PHP يتعرف على التوجيهات، لكنها تثبت فقط إعدادات واجهة سطر الأوامر. إذا استمر تحذير Nextcloud، قارن إعدادات SAPI المُحمّلة مع نتيجة واجهة سطر الأوامر. يُعد هذا الأمر بالغ الأهمية، خاصةً في الأنظمة التي تحتفظ بملفات منفصلة لـ cliو fpmو apache2INI.
الخطوة 5: إعادة التحقق من الإدارة > نظرة عامة
بعد إعادة تحميل PHP، قم بتحديث قسم الإدارة > نظرة عامة. سيختفي تحذير OPcache بمجرد أن يستخدم SAPI الخاص بالويب الحدود والإعدادات المطلوبة بشكل صحيح.
قم بتحديث نظرة عامة على إدارة Nextcloud بعد إعادة تشغيل خدمة PHP. إذا اختفى التحذير، فهذا يعني أن واجهة برمجة التطبيقات (SAPI) تقرأ الإعدادات بشكل صحيح، وأن الحد المُبلغ عنه لم يعد يتم تجاوزه.
إذا استمرت المشكلة، فلا تستمر في زيادة القيم عشوائيًا. تحقق من أربعة أمور بالترتيب: هل عدّلت ملف INI الصحيح؟ هل يوجد ملف INI آخر تم تحميله لاحقًا يلغي إعداداتك؟ هل أُعيد تشغيل خدمة PHP المعنية؟ وهل يشير التحذير إلى مورد OPcache مختلف عن المورد الذي قمت بزيادته؟
ما مقدار ذاكرة OPcache التي يجب تخصيصها؟
لا توجد قيمة مثالية واحدة. الهدف الأمثل هو توفير مساحة كافية في ذاكرة التخزين المؤقت لضمان عدم اقترابها باستمرار من حدودها القصوى، دون التأثير سلبًا على أداء باقي مكونات النظام. بالنسبة للخوادم الافتراضية الخاصة الصغيرة، يُنصح بالبدء بقيمة متحفظة ومراقبة ضغط الذاكرة. أما في حالة الخوادم التي تحتوي على العديد من التطبيقات أو حجم كبير من أكواد PHP، فقد يكون تخصيص 256 ميجابايت أو أكثر مبررًا عندما يُظهر استخدام OPcache الفعلي أن 128 ميجابايت غير كافية. على الخوادم الكبيرة، يجب مراعاة حجم الذاكرة بالتزامن مع عدد عمليات PHP-FPM والخدمات المشتركة الأخرى.
المقارنة العملية بسيطة: زيادة ذاكرة OPcache تقلل من عمليات إزالة البيانات من ذاكرة التخزين المؤقت وإعادة الترجمة، بينما تقليلها يتيح استخدام المزيد من ذاكرة الوصول العشوائي (RAM) لعمليات PHP المتزامنة وقواعد البيانات. اختر بناءً على الاستخدام الفعلي والتحذيرات التي يُبلغ عنها Nextcloud، وليس على أكبر قيمة يمكن لخادمك استيعابها.
أخطاء شائعة تؤدي إلى استمرار التحذير
تحرير CLI PHP فقط: لا يزال المتصفح يستخدم PHP-FPM أو mod_php.
رفع الحد الخاطئ: زيادة الذاكرة لا تحل مشكلة امتلاء جدول الملفات المعجلة.
تجاهل إعادة التشغيل: قد لا تزال عملية PHP قيد التشغيل تحتوي على قيم INI القديمة.
تعطيل opcache.save_comments: يتطلب Nextcloud الاحتفاظ بالتعليقات.
نسخ أجزاء الضبط القديمة: قد توصي الأدلة القديمة بإعدادات إعادة التحقق العدوانية التي تخلق مشاكل في الترقية.
النهج الموصى به حسب نوع الخادم
خادم Nextcloud شخصي صغير: احتفظ بالإعدادات الافتراضية لإعادة التحقق، واحتفظ بالتعليقات، وقم بزيادة الحد فقط بما يتجاوز العتبة الفعلية. هذا يقلل من استخدام ذاكرة الوصول العشوائي والمفاجآت التشغيلية.
خادم متعدد المستخدمين ذو استخدام مكثف: راقب استهلاك ذاكرة التخزين المؤقت OPcache، ووفر مساحة إضافية عند ظهور تحذير من المسؤول يشير إلى وجود ضغط. نسّق ذاكرة OPcache مع حجم عامل PHP-FPM بحيث لا يؤدي تحسين واحد إلى تبديل الذاكرة على مستوى النظام.
الاستضافة المُدارة أو صورة الحاوية: حدد أولاً مكان تعديل إعدادات PHP. قد يختفي تعديل ملف داخل حاوية مؤقتة بعد إعادة النشر، بينما قد يُتيح مُزوّد الخدمة قيم INI مُخصصة من خلال لوحة التحكم أو إعدادات البيئة.
الفحص النهائي
يتألف الحل الصحيح من ثلاثة أجزاء: تفعيل OPcache في عملية PHP الخاصة بموقع Nextcloud، opcache.save_comments=1والحفاظ على السلوكيات المطلوبة، وتوفير مساحة كافية لمورد OPcache المحدد الذي كان على وشك الامتلاء. بمجرد تحقق هذه الشروط وإعادة تحميل PHP، سيختفي التحذير دون الحاجة إلى تخصيص مفرط للذاكرة أو إجراء تغييرات محفوفة بالمخاطر على التحقق من صحة ذاكرة التخزين المؤقت.