ملف wp-config.php في WordPress: وظيفته وطريقة تعديله
يحفظ ملف wp-config.php بيانات دخول قاعدة البيانات ومفاتيح الأمان وإعدادات الموقع. تعرّف على مكانه ووظيفة كل جزء فيه وكيفية تعديله بأمان.
ملف wp-config.php هو الذي يخبر WordPress بكيفية الاتصال بقاعدة البيانات وكيفية العمل. ويوجد عادةً في المجلد الجذر للتثبيت، بجانب wp-admin وwp-content. يمكنك إضافة الإعدادات أو تغييرها بأمان فوق السطر “That’s all, stop editing!” (هذا كل شيء، توقف عن التعديل!)، أما كتلتا الكود أسفل هذا السطر فاتركهما كما هما. احتفظ بنسخة احتياطية أولًا، لأن خطأً كتابيًا واحدًا قد يعطل الموقع كله.
أهم النقاط
- يحتوي الملف على كلمة مرور قاعدة البيانات ومفاتيح الأمان، فتعامل معه ككلمة مرور ولا تنشر محتواه أبدًا في منتدى أو محادثة دعم.
- تُوضع الإعدادات المخصصة فوق سطر “stop editing”. والسطر الأخير أسفله يحمّل WordPress، وأي إعداد بعد ذلك السطر يأتي بعد فوات الأوان.
- يتضمن تنزيل WordPress ملف
wp-config-sample.php. أما ملفwp-config.phpالحقيقي فيُنشأ أثناء الإعداد.- لا تغيّر
$table_prefixفي موقع منشور بتعديل هذا السطر وحده، إذ ستتصرف WordPress كأنها غير مثبتة.
أين تجد ملف wp-config.php
اتصل عبر SFTP أو افتح مدير الملفات في استضافتك، ثم انتقل إلى المجلد الذي يضم wp-admin وwp-includes وwp-content. وتسميه وثائق WordPress جذر مجلد ملفات WordPress.
إذا لم يكن هناك، فابحث في المجلد الأعلى بمستوى واحد. يفحص مُحمّل WordPress مجلد التثبيت أولًا ثم المجلد الأصل، ويتخطى المجلد الأصل إذا كان فيه ملف wp-settings.php خاص به، لأن ذلك يعني وجود تثبيت WordPress آخر فيه.
إذا لم يوجد الملف في أي من المكانين، ترسل WordPress الزوار إلى شاشة الإعداد. تنشئ هذه الشاشة الملف من wp-config-sample.php. وإذا تعذرت عليها الكتابة في المجلد، تعرض لك النص لتلصقه يدويًا في ملف جديد.
وظيفة كل قسم افتراضي
ملف wp-config-sample.php هو القالب، ويضم هذه الأجزاء بهذا الترتيب:
| القسم | ما يحتويه | هل يمكنك تغييره؟ |
|---|---|---|
DB_NAME وDB_USER وDB_PASSWORD وDB_HOST | بيانات دخول قاعدة البيانات. يستخدم القالب localhost كمضيف، ويمكن لشركة الاستضافة تزويدك بالقيم الحقيقية. | نعم، عندما تتغير بيانات قاعدة البيانات. وتسبب القيمة الخاطئة خطأ إنشاء الاتصال بقاعدة البيانات. |
DB_CHARSET وDB_COLLATE | طريقة تخزين النص في قاعدة البيانات. القيمتان الافتراضيتان هما utf8mb4 وقيمة فارغة. | يقول تعليق القالب نفسه عن DB_COLLATE إنه لا ينبغي تغييره عند الشك. |
من AUTH_KEY إلى NONCE_SALT | ثمانية مفاتيح أمان وقيم salt تُستخدم لملفات تعريف الارتباط الخاصة بتسجيل الدخول. | نعم. يؤدي تغييرها إلى تسجيل خروج جميع المستخدمين. |
$table_prefix | النص الموجود في بداية اسم كل جدول في قاعدة البيانات، وهو wp_ افتراضيًا. | عند التثبيت فقط، ما لم تُعد تسمية الجداول أيضًا وتحدّث الإدخالات المحفوظة في قاعدة البيانات التي تستخدم أسماؤها هذه البادئة. |
WP_DEBUG | وضع التصحيح، وقيمته false في القالب. | نعم. يوضح دليل موقع سجل التصحيح كيفية إرسال الأخطاء إلى ملف. |
| التعليق “custom values” (القيم المخصصة) | مساحة فارغة لإعداداتك، تنتهي عند سطر “stop editing”. | نعم، هنا تضع إضافاتك. |
ABSPATH وسطر wp-settings.php | مسار WordPress، ثم السطر الذي يحمّل بقيتها. | لا. اتركهما كما هما. |
المفاتيح الجديدة على بعد نقرة واحدة: تمنحك خدمة المفاتيح السرية في WordPress.org مجموعة جديدة في كل مرة تفتحها. استبدل الأسطر الثمانية كلها بالمجموعة الجديدة.
قد تخلو الملفات الأقدم من التعليق “custom values” وتقول “Happy blogging” بدلًا من “Happy publishing”. كلاهما يعمل، والقاعدة واحدة: أضف إعداداتك فوق ذلك السطر.
الإعدادات التي يكثر تغييرها
كل إعداد منها سطر واحد. وكلها مأخوذة من وثائق wp-config.php، أما القيم الافتراضية فمن ملف default-constants.php في WordPress.
// Memory for the front end, then for wp-admin
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );
// Keep at most 3 revisions per post (false turns revisions off)
define( 'WP_POST_REVISIONS', 3 );
// Autosave every 180 seconds
define( 'AUTOSAVE_INTERVAL', 180 );
// Empty the trash after 7 days
define( 'EMPTY_TRASH_DAYS', 7 );
// Remove the theme and plugin file editor from wp-admin
define( 'DISALLOW_FILE_EDIT', true );
// Force HTTPS for logins and wp-admin
define( 'FORCE_SSL_ADMIN', true );
// Set the site addresses here
define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );
انسخ الأسطر التي تحتاجها فقط. ولبعضها تفاصيل تستحق المعرفة:
- الذاكرة: تستخدم WordPress افتراضيًا 40M، أو 64M في الشبكات المتعددة، و256M للوحة wp-admin ما لم يكن PHP يسمح بأكثر من ذلك. وإذا كانت استضافتك لا تسمح بتغيير الحد، تستخدم WordPress الحد الموجود في PHP. ويشرح دليل نفاد الذاكرة ما تفعله في هذه الحالة.
- المراجعات: مفعّلة افتراضيًا. اضبطها على
falseلإيقافها، أو على رقم لتحديد عددها. - الحفظ التلقائي وسلة المهملات: القيمتان الافتراضيتان هما 60 ثانية و30 يومًا. يؤدي ضبط
EMPTY_TRASH_DAYSعلى0إلى إيقاف السلة، وتحذر الوثائق من أن WordPress لن تطلب عندها تأكيدًا حين ينقر أحد على “Delete Permanently” (حذف نهائي). - محرر الملفات: يقول دليل التحصين إن هذا لن يمنع المهاجم من رفع ملفات خبيثة، وإن كان قد يوقف بعض الهجمات. ويذهب
DISALLOW_FILE_MODSإلى أبعد من ذلك فيمنع أيضًا تثبيت الإضافات والقوالب وتحديثها. - HTTPS: عندما يبدأ إعداد عنوان WordPress بـ
httpsأصلًا، تضبط WordPress قيمةFORCE_SSL_ADMINعلىtrueتلقائيًا. ولا يغيّر هذا السطر شيئًا إلا عندما لا يبدأ العنوان بـhttps. - عناوين الموقع: تتجاوز هذه الأسطر القيم المحفوظة دون تغيير ما هو مخزن في قاعدة البيانات. أدرج الجزء
https://.
يحتاج إعداد واحد إلى تخطيط أكبر. يؤدي define( 'DISABLE_WP_CRON', true ); إلى منع زيارات الصفحات من تشغيل المهام المجدولة، لذا أعدّ مهمة cron على الخادم لملف wp-cron.php قبل تفعيله، وإلا فلن تعمل المقالات المجدولة والمهام الموقوتة الأخرى.
كيفية تعديل ملف wp-config.php بأمان
- نزّل نسخة أولًا. احتفظ بها على جهازك. فالنسخة المتروكة على الخادم باسم مثل
wp-config.php.bakقد تكون مقروءة في المتصفح، لأن الخادم لم يعد يعاملها كملف PHP. - افتح الملف في محرر نصوص عادي. يذكر دليل التعديل في WordPress أن Notepad++ وSublime Text وVisual Studio Code مقبولة، ويحذر من Google Docs وMicrosoft Word لأن معالجات النصوص تغيّر علامات الاقتباس وقد تضيف كودًا يعطل الملفات.
- ابحث عن سطر “stop editing” وضع أسطرك الجديدة فوقه مباشرة. وإذا كان الإعداد معرّفًا في مكان أعلى، فغيّر ذلك السطر.
- احفظ وارفع الملف، ثم افتح موقعك في نافذة متصفح خاصة، مع صفحة واحدة من wp-admin.
- إذا تعطل شيء، فأعد نسختك إلى مكانها. يلغي ذلك التعديل حتى لو لم تفتح wp-admin.
نقل الملف فوق جذر الويب
يقول دليل التحصين إن wp-config.php يمكن تخزينه في المجلد الأعلى من تثبيت WordPress بمستوى واحد، ويتعامل كود المُحمّل مع ذلك دون أي إعدادات إضافية. انقل الملف، ثم تحقق من أن الموقع ما زال يعمل. ولهذا النقل حدّان:
- لا يمكن أن يضم المجلد الأصل تثبيت WordPress آخر. يتجاهل المُحمّل المجلد الأصل الذي يحتوي على
wp-settings.phpخاص به. - المستوى الأعلى لا يكون خاصًا إلا إذا كانت WordPress في جذر الويب. إذا كانت WordPress في مجلد فرعي مثل
/blog/، فإن المستوى الأعلى يبقى عامًا في الغالب.
ويذكر الدليل نفسه أن بعضهم يرى أن للنقل فوائد أمنية ضئيلة، وأنه قد يُدخل ثغرات خطيرة إذا تم دون حذر. لذا اعتبره خيارًا اختياريًا. وعلى Apache، يقدم الدليل أيضًا هذه الكتلة لتوضع في أعلى ملف .htaccess، وهي ترفض الطلبات المباشرة إلى الملف:
<Files "wp-config.php">
Require all denied
</Files>
ويتناول دليلنا لأمان .htaccess هذه القاعدة مع قواعد أخرى.
أذونات ملف wp-config.php
تعطي وثائق WordPress أرقامًا مختلفة قليلًا بحسب الحالة:
- يقول دليل التحصين إن قراءة الملف يجب أن تقتصر عليك وعلى خادم الويب، وهذا بحسبه يعني عمومًا 400 أو 440.
- يذكر دليل أذونات الملفات القيمتين 440 أو 400 في الاستضافة المشتركة مع suexec، لمنع المستخدمين الآخرين على الخادم من قراءته. كما يعرض 600 كمثال مؤمَّن.
- أما ملفات WordPress العادية، فيذكر ذلك الدليل لها 644 أو 640.
يعتمد الرقم المناسب على مستخدم النظام الذي يعمل به خادم الويب. ويجب أن يستطيع خادم الويب قراءة الملف، لذا إذا توقف الموقع بعد التغيير، فارجع إلى القيمة السابقة واسأل شركة الاستضافة عن القيمة المناسبة لإعدادها.
أخطاء شائعة
- لصق إعداد بعد سطر
wp-settings.php. هذا السطر يحمّل WordPress ويضبط قيمها الافتراضية. ولا يمكن لثابت PHP أن يتغير أثناء تشغيل السكربت، فلا يكون لسطرك أي أثر. - تعريف الإعداد نفسه مرتين. السطر الأول يحدد القيمة والثاني لا يستطيع تغييرها. ويذكر دليل PHP أن إعادة تعريف ثابت مهملة (deprecated) منذ PHP 8.5، لذا قد تظهر رسالة أيضًا. ابحث عن الاسم في الملف قبل إضافته.
- وضع علامات اقتباس حول true أو false. القيمة
'false'سلسلة نصية غير فارغة، ويعاملها PHP على أنها true. اكتبfalseدون علامات اقتباس. أما الأحجام مثل'256M'فتحتاج إليها. - علامات الاقتباس المائلة من معالج نصوص أو صفحة ويب. يحتاج PHP إلى علامات اقتباس مستقيمة، والمائلة تسبب خطأً يمنع الموقع من العمل.
- عرض أخطاء التصحيح في موقع منشور. القيمة الافتراضية لـ
WP_DEBUG_DISPLAYهيtrue، فإذا فعّلتWP_DEBUGوحده تظهر الأخطاء على الصفحة للزوار. ويوضح دليل موقع سجل التصحيح كيفية إرسالها إلى ملف. - ترك
WP_ALLOW_REPAIRمفعّلًا. تقول الوثائق إن عليك تفعيله عند الحاجة فقط وتعطيله بعد حل المشكلة.
الأسئلة الشائعة
ما هو ملف wp-config.php في WordPress؟
هو ملف الإعدادات الذي تحمّله WordPress عند بدء التشغيل. يحتوي على بيانات دخول قاعدة البيانات ومفاتيح الأمان وبادئة الجداول، وفيه تضيف إعدادات مثل WP_DEBUG أو WP_MEMORY_LIMIT.
أين يوجد ملف wp-config.php؟
عادةً في جذر تثبيت WordPress، وهو المجلد الذي يضم أيضًا wp-admin وwp-includes وwp-content. وتقبله WordPress كذلك في المجلد الأعلى من التثبيت بمستوى واحد، بشرط ألا يحتوي ذلك المجلد على wp-settings.php.
أين أضيف الكود في ملف wp-config.php؟ فوق السطر الذي يقول That’s all, stop editing! Happy publishing. (هذا كل شيء، توقف عن التعديل! نشرًا سعيدًا.) وتقول الملفات الأقدم Happy blogging. فالسطر الأخير أسفله يحمّل WordPress، لذا يأتي أي إعداد يوضع بعد ذلك السطر بعد فوات الأوان.
هل تعديل ملف wp-config.php آمن؟ نعم، إذا احتفظت بنسخة احتياطية واستخدمت محرر نصوص عاديًا. خطأ كتابي واحد قد يمنع الموقع كله من العمل، بما في ذلك wp-admin، لذا نزّل نسخة أولًا. وإذا تعطل الموقع بعد التعديل، فأعد النسخة إلى مكانها.
ماذا يحدث إذا حذفت ملف wp-config.php؟ لن تجد WordPress بيانات دخول قاعدة البيانات، فتبدأ عملية الإعداد مع طلب إنشاء ملف إعدادات. يبقى المحتوى في قاعدة البيانات، لذا فإن استعادة النسخة الاحتياطية أو إعادة إنشاء الملف بالبيانات نفسها تعيد ربط الموقع.
ما الأذونات المناسبة لملف wp-config.php؟ يقول دليل تحصين WordPress إن القراءة يجب أن تقتصر عليك وعلى خادم الويب، وهذا يعني عمومًا 400 أو 440. ويعرض دليل أذونات الملفات أيضًا 600. يجب أن يبقى خادم الويب قادرًا على قراءة الملف، لذا راجع شركة الاستضافة إذا توقف الموقع عن العمل.
المصادر
- WordPress Advanced Administration: wp-config.php، Hardening WordPress، File permissions، Editing files
- الكود المصدري لـ WordPress: wp-config-sample.php، wp-load.php، default-constants.php، setup-config.php، cron.php
- دليل PHP: Constants، Booleans
أنشئ الإعدادات التي تحتاجها دون كتابتها يدويًا، بما في ذلك مفاتيح أمان جديدة، باستخدام مولّد wp-config.php المجاني.
FAQ
أسئلة
ما هو ملف wp-config.php في WordPress؟
هو ملف الإعدادات الذي تحمّله WordPress عند بدء التشغيل. يحتوي على بيانات دخول قاعدة البيانات ومفاتيح الأمان وبادئة الجداول، وفيه تضيف إعدادات مثل WP_DEBUG أو WP_MEMORY_LIMIT.
أين يوجد ملف wp-config.php؟
عادةً في جذر تثبيت WordPress، وهو المجلد الذي يضم أيضًا wp-admin وwp-includes وwp-content. وتقبله WordPress كذلك في المجلد الأعلى من التثبيت بمستوى واحد، بشرط ألا يحتوي ذلك المجلد على wp-settings.php.
أين أضيف الكود في ملف wp-config.php؟
فوق السطر الذي يقول That's all, stop editing! Happy publishing. (هذا كل شيء، توقف عن التعديل! نشرًا سعيدًا.) وتقول الملفات الأقدم Happy blogging. فالسطر الأخير أسفله يحمّل WordPress، لذا يأتي أي إعداد يوضع بعد ذلك السطر بعد فوات الأوان.
هل تعديل ملف wp-config.php آمن؟
نعم، إذا احتفظت بنسخة احتياطية واستخدمت محرر نصوص عاديًا. خطأ كتابي واحد قد يمنع الموقع كله من العمل، بما في ذلك wp-admin، لذا نزّل نسخة أولًا. وإذا تعطل الموقع بعد التعديل، فأعد النسخة إلى مكانها.
ماذا يحدث إذا حذفت ملف wp-config.php؟
لن تجد WordPress بيانات دخول قاعدة البيانات، فتبدأ عملية الإعداد مع طلب إنشاء ملف إعدادات. يبقى المحتوى في قاعدة البيانات، لذا فإن استعادة النسخة الاحتياطية أو إعادة إنشاء الملف بالبيانات نفسها تعيد ربط الموقع.
ما الأذونات المناسبة لملف wp-config.php؟
يقول دليل تحصين WordPress إن القراءة يجب أن تقتصر عليك وعلى خادم الويب، وهذا يعني عمومًا 400 أو 440. ويعرض دليل أذونات الملفات أيضًا 600. يجب أن يبقى خادم الويب قادرًا على قراءة الملف، لذا راجع شركة الاستضافة إذا توقف الموقع عن العمل.