کانفیگ وردپرس: هر آنچه باید درباره فایل wp-config.php بدانید!

فایل wp-config.php یکی از مهمترین فایل های هسته وردپرس است که حاوی تنظیمات و پیکربندی های مهمی به منظور افزایش کارایی(Performance) و اعمال مسائل امنیتی می باشد و از این حیث به عنوان ستون فقرات وردپرس نیز شناخته می شود.

برای دسترسی به فایل wp-config.php مشابه تصویر زیر به روت وب سایت تان مراجعه کنید، لازم به ذکر است که در فرآیند نصب وردپرس فایل wp-config-sample.php نیز ایجاد می شود که می توانید آنرا حذف کنید.

فایل wp-config در وردپرس

هر گونه پیکربندی اشتباه فایل wp-config.php وب سایت تان را با چالش های جدی مواجه خواهد کرد، از این رو بهتر است ابتدا با ساختار این فایل آشنا شوید تا بتوانید با خیال راحت تغییرات تان را اعمال کنید.

فایل wp-config.php حاوی چه تنظیماتی است؟

ابتدا تنظیمات اولیه و پیش فرضی که پس از نصب وردپرس با آن روبرو خواهید شد را بررسی می کنیم.

۱- تنظیمات پایگاه داده(Database) وردپرس

وردپرس برای برقراری ارتباط با بانک اطلاعاتی MySQL و دیتابیس خودش از تنظیمات پایگاه داده استفاده می کند، قابل توضیح نیست که اگر این تنظیمات به درستی اعمال نشود وب سایت تان راه اندازی نخواهد شد.

در زبان برنامه نویسی PHP برای تعریف ثوابت از تابع define استفاده می شود، تابع define دارای دو پارامتر اجباری است که مقدار اول نام ثابت و دومی مقدار ثابت(به صورت رشته ،عدد ،بولین) می باشد، این تابع در فایل wp-config.php به کرات استفاده شده است.

ثابت DB_NAME اولین موردی است که بررسی می کنیم، این ثابت حاوی نام دیتابیس وردپرس است که کلیه جداول و اطلاعات وردپرس در آنجا ذخیره می شود.

/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress_db_name' );

 

ثوابت DB_USER و DB_PASSWORD هم حاوی نام کاربری و کلمه عبور اتصال به پایگاه داده MySQL و دیتابیس وردپرس هستند، به عبارت دیگر کاربری که مجوز برقراری ارتباط به بانک اطلاعاتی وردپرس را دارد در این قسمت مشخص می شود.

/** MySQL database username */
define( 'DB_USER', 'db_user_name' );

/** MySQL database password */
define( 'DB_PASSWORD', 'db_password' );

 

DB_HOST نیز آدرس سروری است که پایگاه داده وردپرس در آنجا نگهداری می شود. مقدار ثابت فوق در بیشتر مواقع به صورت “localhost” می باشد، اما گاهی اوقات ممکن است سرویس هاستینگ شما از آدرس IP یا نام دامنه استفاده کند.

/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

 

دو ثابت دیگر نیز در این لیست وجود دارد که شیوه کدینگ و ذخیره سازی اطلاعات در جداول وردپرس را مشخص می کنند.

/** Database Charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8mb4' );

/** The Database Collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );

 

در انتهای این بخش به متغیر table_prefix می رسیم که با مقدار پیش فرض “_wp” تنظیم شده است، وردپرس از این مقدار در نامگذاری جداول خود استفاده می کند و در ابتدای نام آنها _wp را قرار می دهد، به عنوان مثال wp_users، wp_posts.

$table_prefix = 'wp_';

 

توجه داشته باشید مقادیر ثوابتی که تا اینجا بررسی کردیم در فرآیند نصب وردپرس توسط شما تعیین می شود.

تنظیمات پایگاه داده وردپرس

۲- تنظیمات امنیتی وردپرس

در بخش دوم فایل wp-config.php ثوابت امنیتی قرار دارد، این ثوابت از کاراکترهای تصادفی و منحصربفردی تشکیل شده اند که در هنگام احراز هویت(Authentication) کاربران و رمزنگاری کوکی های استفاده می شود.

define( 'AUTH_KEY',         '`egJ4I@x$p8 /oO>H[>H:v;!spLAhf@:#dlT;`7=iNI28/:4/)E,L j-,]/ dA|t' );
define( 'SECURE_AUTH_KEY',  '<RRew<!^9TEz=+#7`[<*=q3DE:R%<(6[r:jq<$JUaln_8!iDoeqt5k.R*aN#ftUN' );
define( 'LOGGED_IN_KEY',    'slj0lA?I5{$;b19?m5 -)E|.5/$5*k)Bc=C<<@]Jhx7@/)OLfjwShv`fc<=l<Rz}' );
define( 'NONCE_KEY',        ')L/Zo%X,x,.m>tgC[1y`w&:+~r.T+oYoQql#wN6Go! (/%T|=V:*kJ2mln/<<dd$' );
define( 'AUTH_SALT',        '6NA?Y#N)9B6.Hc&9v>y>-Aa*ZR=)YG NbcQs5GxbL*erT[1d9* bE(XG Hv' );
define( 'SECURE_AUTH_SALT', ';E3j1lDcE8Xc3{I.N#zp:9/IbnZrR<wqq&8pIbDz%c7kNo?F>,73l>Vf8Zf8Hnd0' );
define( 'LOGGED_IN_SALT',   '0_Rl78Nd&M_nz`HPKls+.p~+#pBdQ%%c/-053;|8{i w2v~ID0vs}W=5A+B7~[G:' );
define( 'NONCE_SALT',       '+v*[S6/m%Jy6&f%s9#F=UR856AY^7%T.lmwn/[QV*=S_Roh40RDdlxFd>5pT|ep^' );

 

این مقادیر در مراحل نصب وردپرس تولید می شوند، اما می توانید آنها را به کمک ابزار WordPress Key Generator تغییر دهید، در صورت تغییر این مقادیر کلیه کاربرانی که به وردپرس لاگین کرده اند از حساب کاربری خود خارج شده و باید مجددا به سیستم لاگین کنند.

۳- مد خطایابی(Debugging Mode)

بلافاصله پس از متغیر table_prefix ثابت WP_DEBUG را با مقدار پیش فرض false مشاهده خواهید کرد. اگر آن را به true تغییر دهید وردپرس در وضعیت اشکال زدایی اجرا خواهد شد و در صورت بروز هر گونه خطایی آن را نشان می دهد.

define( 'WP_DEBUG', false );

قبل از تغییر این ثابت پیشنهاد می کنیم مطلب چگونه خطاهای وردپرس را ردیابی کنیم؟ را مطالعه فرمائید.

۴- ثابت ABSPATH

این ثابت به همراه دستور شرطی if از دسترسی و اجرای مستقیم فایل wp-config.php از طریق مرورگر وب جلوگیری می کند، به هیچ عنوان مقادیر این بخش را تغییر ندهید.

if ( !defined('ABSPATH') )
	define( 'ABSPATH', dirname(__FILE__) . '/' );

 

۵- فایل wp-settings.php

به انتهای فایل wp-config.php رسیدیم، هر آنچه که تا اینجا بررسی شد فقط ثوابت و تنظیمات بودند، تا زمانی که فایل wp-settings توسط خط زیر فراخوانی نگردد هیچگونه عملیاتی توسط وردپرس قابل انجام نخواهد بود، پس حواستان را حسابی جمع کرده و مواظب این کد ساده اما حیاتی باشید.

require_once( ABSPATH . 'wp-settings.php' );

 

چه چیزهایی را می توانیم به فایل wp-config.php اضافه کنیم؟

تنظیمات وردپرس به موارد بالا ختم نمی شود و شما می توانید بسته به نیازی که دارید ثوابت و متغیرهای متفاوتی را به این فایل اضافه کنید، در ادامه قصد داریم به تعدادی از این گزینه های مفید و کاربردی اشاره کنیم.

۱- انتقال دایرکتوری های وردپرس

وردپرس به صورت پیش فرض قالب و افزونه هایی که نصب می کنید را به ترتیب در زیر دایرکتوری های themes و plugins در دایرکتوری wp-content ذخیره می کند.

ساختار دایرکتوری های وردپرس

اما شما می توانید این مسیر پیش فرض را با استفاده از ثابت WP_CONTENT_DIR به صورت زیر تغییر دهید.

define( 'WP_CONTENT_DIR', dirname(__FILE__) . '/my-content/my-wp-content' );

 

با تابع dirname مسیری که فایل wp-config.php در آنجا ذخیره شده است را بدست می آوریم، در صورتی که این دایرکتوری ها در مسیر مشخص شده وجود نداشته باشد وردپرس آنها را ایجاد می کند، پس از آن باید دایرکتوری های themes و plugins را از مسیر قبلی به مسیر جدید منتقل کنید.

به جای استفاده از تابع dirname می توانید مستقیما مسیر جدید را مشخص کنید.

define( 'WP_CONTENT_URL', 'http://yourdomain.com/my-content/my-wp-content' );

 

اگر می خواهید فقط مسیر پیش فرض دایرکتوری plugins را تغییر دهید و کاری به wp-content ندارید از ثابت WP_PLUGIN_DIR  به صورت زیر استفاده نمائید.

define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/my-plugins' );
define( 'WP_PLUGIN_URL', WP_CONTENT_URL . '/my-plugins' );

برای انتقال دایرکتوری themes باید از WP_CONTENT_DIR استفاده کنید و ثابت مشخصی برای آن وجود ندارد.

در داخل wp-content یک دایرکتوری مهم دیگر به نام uploads وجود دارد که هر آنچه شما آپلود می کنید در این دایرکتوری ذخیره می شود، برای تغییر مسیر آن بدین صورت عمل کنید.

define( 'UPLOADS', 'my-uploads' );

 

به عنوان نکته آخر این بخش بهتر است بدانید که این تغییر مسیرها می تواند در تامین امنیت وردپرس تاثیرگذار باشد، به همین دلیل پیشنهاد می کنیم مقاله امنیت وردپرس: چگونه Directory Browsing را غیرفعال کنیم؟ را مطالعه فرمائید.

۲- مدیریت رونوشت ها(Post Revisions)

وردپرس در هنگام ویرایش یک پست نسخه های متفاوتی از آن نوشته را برای روز مبادا ذخیره می کند و این امکان را می دهد تا در صورت قطع برق یا کرش مرورگر تغییراتی که در آن بازه زمانی انجام داده اید را به آخرین نسخه بازگردانید.

چگونه از رونوشت ها وردپرس استفاده کنیم

 

این امکان به صورت پیش فرض فعال می باشد و در صورتی که می خواهید آنرا غیرفعال کنید از کد زیر استفاده کنید.

define( 'WP_POST_REVISIONS', false );

تنظیمات این بخش در راندمان و کارایی وردپرس تاثیرگذار است از این رو پیشنهاد می کنیم مطلب مدیریت رونوشت ها (Post Revisions) در وردپرس را مطالعه فرمائید.

۳- ذخیره خودکار(Automatic Save)

زمانی که در حال ویرایش یا ایجاد یک پست جدید هستید وردپرس به صورت خودکار در بازه های زمانی ۶۰ ثانیه ای تغییرات تان را ذخیره می کند و منتظر نمی ماند که بر روی گزینه “ذخیره پیش نویس” کلیک کنید، این عملیات از طریق فراخوانی های ایجکس(Ajax) انجام می شود.

قابلیت auto save در وردپرس

برای تغییر این مدت زمان از ثابت AUTOSAVE_INTERVAL به صورت زیر استفاده کنید.

define( 'AUTOSAVE_INTERVAL', 30 );

۴- زباله دان(Trash Bin)

فرآیند کلی حذف یک آیتم(پست، صفحه، کامنت و …) در وردپرس معمولا بدین صورت است:

  1. حذف آیتم مورد نظر از طریق گزینه “انتقال به زباله دان”
  2. مراجعه به زباله دان
  3. حذف نهایی آیتم با گزینه “پاک کردن برای همیشه”
  4. وردپرس هر ۳۰ روز یکبار عملیات پاک سازی آیتم های موجود در زباله دان را به صورت خودکار انجام خواهد داد.

برای اینکه آین فرآیند را تغییر داده و آیتم های مربوطه بدون انتقال به زباله دان حذف شوند می توانید از کد زیر استفاده کنید، با اینکار گام اول و دوم غیرفعال خواهد شد و مستقیما گزینه “پاک کردن برای همیشه” را مشاهده خواهید کرد.

// Disable Trash Bin
define( 'EMPTY_TRASH_DAYS', 0 );

 

اگر می خواهید مدت زمان پاکسازی خودکار زباله دان را از ۳۰ روز به ۹۰ روز تغییر دهید قطعه کد زیر را در wp-config قرار دهید.

define( 'EMPTY_TRASH_DAYS', 90 );

۵- غیرفعال کردن ویرایشگر قالب و افزونه

در بخش مدیریت وردپرس و در زیرمنوی نمایش و افزونه ها گزینه ای با عنوان ویرایشگر وجود دارد که به شما اجازه می دهد فایل های افزونه و قالب را ویرایش کنید، این امکان اگر چه مفید و کاربردی است اما اگر در اختیار یک هکر قرار بگیرد می تواند هر بلایی سر وب سایت تان بیاورد. در پست آموزشی امنیت وردپرس: ویرایشگر پوسته و افزونه را غیرفعال کنید! به تفضیل در این باره صحبت کردیم.

در هر حال برای غیر فعال کردن این قابلیت می توانید از کد زیر استفاده کنید.

define( 'DISALLOW_FILE_EDIT',true );

۶- تعمیر پایگاه داده

وردپرس دارای یک ابزار توکار و کاربردی است که اجازه می دهد بدون نصب افزونه اضافی عملیات تعمیر و بهینه سازی دیتابیس را انجام دهید. برای فعال سازی این ویژگی خط زیر را به wp-config اضافه کنید.

define( 'WP_ALLOW_REPAIR', true );

 

پس از انجام اینکار به انتهای آدرس وب سایت تان مسیر wp-admin/maint/repair.php را اضافه کرده در صفحه ای که باز خواهد شد از گزینه های “تعمیر پایگاه داده” و “تعمیر و بهینه سازی پایگاه داده” استفاده کنید.

http://yourdomain.com/wp-admin/maint/repair.php

ابزار تعمیر دیتابیس وردپرس

در صورت نیاز به اطلاعات بیشتر مطلب آموزشی تعمیر و بهینه سازی دیتابیس وردپرس بدون نصب افزونه را مطالعه فرمائید.

۷- تغییر جدول کاربران

وردپرس به طور پیش فرض اطلاعات و مشخصات کاربران را در دو جدول wp_users و wp_usermeta نگهداری می کند. با استفاده از خطوط زیر می توانید جدول دلخواه خود را به وردپرس معرفی کرده تا اطلاعات کاربران در جداول مدنظرتان ذخیره شود.

define( 'CUSTOM_USER_TABLE', $table_prefix.'my_new_users' );
define( 'CUSTOM_USER_META_TABLE', $table_prefix.'my_new_usermeta' );

۸- غیرفعال کردن بروزسانی جداول وردپرس

هنگامی که وردپرس را بروزرسانی می کنید معمولا تابع ()dbDelta در پشت صحنه اجرا خواهد شد، هدف این تابع تغییر پایگاه داده به منظور مطابقت با آخرین نسخه وردپرس است. توجه داشته باشید که اینکار به خودی خود هیچ مشکلی ایجاد نخواهد کرد، اما وب سایت هایی که از حجم اطلاعاتی بالا و تعداد زیادی کاربر برخوردار هستند ترجیح می دهند با غیرفعال کردن این کانفیگ در زمان های کم ترافیک اینکار را انجام دهند تا سربار کمی به وب سایت شان تحمیل شود.

برای غیرفعال کردن این قابلیت از کانفیگ زیر استفاده کنید:

define( 'DO_NOT_UPGRADE_GLOBAL_TABLES', true );

۹- جلوگیری از نصب و بروزرسانی افزونه و قالب توسط کاربران

در سیستم مدیریت محتوای وردپرس فقط کاربرانی که دارای نقش(Role) ادمین یا Administrator هستند می توانند قالب ها و افزونه ها را مدیریت کنند، اما گاهی اوقات ممکن است بخواهید این امکان را به طور کامل در وب سایت تان غیرفعال کنید.

برای این منظور کافی است خط زیر را در wp-config قرار دهید.

define( 'DISALLOW_FILE_MODS',true );

پس از اعمال تغییرات فوق، دیگر گزینه “افزودن” از منوی “افزونه ها” و گزینه “افزودن پوسته تازه” از منوی “نمایش” در دسترس نخواهد بود.

چگونه از فایل wp-config.php محافظت کنیم؟

همانطور که ملاحظه کردید فایل wp-config حاوی تنظیمات مهم وردپرس است و باید به طریقی از آن محافظت کنید تا امکان هرگونه سوء استفاده و خرابکاری در وب سایت تان را به حداقل برسانید. برای این منظور می توانید از روش های زیر استفاده کنید.

۱- فایل htaccess

یکی از اقدامات مهم امنیتی استفاده از فایل htaccess است، کافی است خطوط زیر را در این فایل قرار دهید.

# Protect wp-config.php
<Files wp-config.php>
    order allow,deny
    deny from all
</Files>

 

در صورتی که وب سرورتان Nginx است از کدهای زیر استفاده کنید.

location ~* wp-config.php { deny all; }

۲- تغییر مکان wp-config

در سایت های وردپرسی معمولا فایل wp.config.php در مسیر روت وب سایت(دایرکتوری public_html) قرار داد و طبیعی است که هکرها از این موضوع مطلع هستند. خوشبختانه وردپرس به شما  اجازه می دهد تا این فایل را به خارج از محل نصب وردپرس منتقل کنید، به عنوان مثال انتقال و جابه جایی از مسیر public_html/ به / .

۳- تغییر سطوح دسترسی

یکی دیگر از اقداماتی که برای تامین امنیت wp-config می توانید انجام دهید ایجاد محدودیت های دسترسی است، در صورتی که از cPanel استفاده می کنید بر روی فایل wp-config.php کلیک راست کرده و گزینه Change Permissions را انتخاب کنید، در پنجره ای که باز خواهد شد مطابق تصویر زیر عمل کنید.

توجه داشته باشید فقط در مواقعی که واقعا می خواهید این فایل را تغییر دهید تیک گزینه Write در بخش User را انتخاب نمائید.

سطوح دسترسی به فایل cpanel

جمع بندی

کارهای زیادی با فایل wp-config.php می توانید انجام داد، تنظیمات و پیکربندی هایی که در این مقاله بررسی کردیم به هیچ وجه کامل نبوده و سعی کردیم مفیدترین آنها را به شما آموزش دهیم. با توجه به حساسیت بالای این فایل بهتر است ابتدا تست های خود را در یک محیط آزمایشی(Local) انجام داده و سپس به سرور اصلی منتقل نمائید.

در پایان اگر می خواهید فایل wp-config.php را به سرعت و بر اساس نیازتان ایجاد کنید ابزار قدرتمند Generate WP در این زمینه به شما کمک خواهد کرد.

نظرات و سوالات کاربران

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *