فایل wp-config.php وردپرس: کاربرد و روش ویرایش امن
فایل wp-config.php اطلاعات ورود پایگاه داده، کلیدهای امنیتی و تنظیمات سایت را نگه میدارد. ببینید کجاست، هر بخش چه میکند و چطور آن را امن ویرایش کنید.
فایل wp-config.php به وردپرس میگوید چطور به پایگاه داده وصل شود و چطور کار کند. این فایل معمولاً در پوشه ریشه نصب، کنار wp-admin و wp-content قرار دارد. میتوانید تنظیمات را با خیال راحت بالای خط “That’s all, stop editing!” (تمام شد، ویرایش را متوقف کنید!) اضافه یا تغییر دهید و باید دو بلوک کد زیر این خط را دستنخورده بگذارید. اول نسخه پشتیبان بگیرید، چون یک غلط تایپی میتواند کل سایت را از کار بیندازد.
نکات کلیدی
- این فایل رمز پایگاه داده و کلیدهای امنیتی شما را دارد، پس مثل رمز عبور با آن رفتار کنید و هرگز محتوایش را در انجمن یا چت پشتیبانی منتشر نکنید.
- تنظیمات سفارشی بالای خط “stop editing” میروند. آخرین خط زیر آن وردپرس را بارگذاری میکند و تنظیمی که بعد از آن خط بیاید دیر میرسد.
- بسته دانلود وردپرس شامل
wp-config-sample.phpاست. فایل واقعیwp-config.phpهنگام راهاندازی ساخته میشود.- مقدار
$table_prefixرا در سایت زنده فقط با ویرایش همین خط تغییر ندهید. وردپرس طوری رفتار میکند که انگار نصب نشده است.
فایل wp-config.php را کجا پیدا کنیم
از طریق SFTP وصل شوید یا مدیر فایل هاست خود را باز کنید، سپس به پوشهای بروید که wp-admin، wp-includes و wp-content در آن هستند. مستندات وردپرس این پوشه را ریشه پوشه فایلهای وردپرس مینامد.
اگر آنجا نبود، یک پوشه بالاتر را ببینید. بارگذار وردپرس اول پوشه نصب و سپس پوشه والد را بررسی میکند و اگر پوشه والد wp-settings.php خودش را داشته باشد از آن میگذرد، چون یعنی نصب دیگری از وردپرس آنجاست.
اگر فایل در هیچکدام از این دو جا نبود، وردپرس بازدیدکنندگان را به صفحه راهاندازی میفرستد. این صفحه فایل را از روی 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.org هر بار که آن را باز کنید مجموعه تازهای میدهد. هر هشت خط را با مجموعه جدید جایگزین کنید.
فایلهای قدیمیتر ممکن است توضیح “custom values” را نداشته باشند و به جای “Happy publishing” بنویسند “Happy blogging”. هر دو کار میکنند و قاعده همان است: تنظیمات خود را بالای آن خط اضافه کنید.
تنظیماتی که معمولاً تغییر میدهند
هر کدام یک خط است. همه آنها از مستندات wp-config.php آمدهاند و پیشفرضها از فایل default-constants.php وردپرس.
// 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' );
فقط خطهایی را که لازم دارید کپی کنید. برخی از آنها جزئیاتی دارند که بهتر است بدانید:
- حافظه: وردپرس به طور پیشفرض از 40M، یا 64M در چندسایته، و 256M برای wp-admin استفاده میکند، مگر اینکه PHP از قبل بیشتر اجازه دهد. اگر هاست شما اجازه تغییر محدودیت را ندهد، وردپرس از همان محدودیت PHP استفاده میکند. راهنمای پر شدن حافظه میگوید در این حالت چه کنید.
- رونوشتها: به طور پیشفرض فعالاند. برای خاموش کردن
falseو برای محدود کردن یک عدد بگذارید. - ذخیره خودکار و زبالهدان: پیشفرضها 60 ثانیه و 30 روز هستند. گذاشتن
EMPTY_TRASH_DAYSروی0زبالهدان را خاموش میکند و مستندات هشدار میدهد که در این حالت وقتی کسی روی “Delete Permanently” (حذف همیشگی) کلیک کند، وردپرس تأیید نمیخواهد. - ویرایشگر فایل: راهنمای امنسازی میگوید این کار جلوی آپلود فایل مخرب توسط مهاجم را نمیگیرد، هرچند ممکن است برخی حملهها را متوقف کند.
DISALLOW_FILE_MODSفراتر میرود و نصب و بهروزرسانی افزونهها و پوستهها را هم مسدود میکند. - HTTPS: وقتی تنظیم «نشانی وردپرس» از قبل با
httpsشروع میشود، وردپرس خودشFORCE_SSL_ADMINرا رویtrueمیگذارد. این خط فقط وقتی چیزی را تغییر میدهد که نشانی باhttpsشروع نشود. - نشانیهای سایت: اینها مقادیر ذخیرهشده را بدون تغییر آنچه در پایگاه داده است نادیده میگیرند. بخش
https://را هم بنویسید.
یک تنظیم برنامهریزی بیشتری میخواهد. define( 'DISABLE_WP_CRON', true ); باعث میشود بازدید صفحات دیگر کارهای زمانبندیشده را شروع نکند، پس پیش از فعال کردنش یک کران سرور برای wp-cron.php تنظیم کنید، وگرنه نوشتههای زمانبندیشده و دیگر کارهای زماندار اجرا نمیشوند.
چگونه wp-config.php را امن ویرایش کنیم
- اول یک نسخه دانلود کنید. آن را روی رایانه خودتان نگه دارید. نسخهای که با نامی مانند
wp-config.php.bakروی سرور بماند ممکن است در مرورگر خوانده شود، چون سرور دیگر با آن مثل PHP رفتار نمیکند. - فایل را در ویرایشگر متن ساده باز کنید. راهنمای ویرایش وردپرس برنامههای Notepad++، Sublime Text و Visual Studio Code را قابل قبول میداند و درباره Google Docs و Microsoft Word هشدار میدهد، چون واژهپردازها علامت نقل قول را تغییر میدهند و ممکن است کدی اضافه کنند که فایل را خراب کند.
- خط “stop editing” را پیدا کنید و خطهای جدید را درست بالای آن بگذارید. اگر تنظیم از قبل بالاتر تعریف شده است، همان خط را تغییر دهید.
- ذخیره و آپلود کنید، سپس سایت را باز کنید: در پنجره خصوصی مرورگر، به همراه یک صفحه از wp-admin.
- اگر چیزی خراب شد، نسخه خود را برگردانید. این کار ویرایش را لغو میکند، حتی اگر wp-admin باز نشود.
انتقال فایل به بالای ریشه وب
راهنمای امنسازی میگوید wp-config.php را میتوان یک پوشه بالاتر از نصب وردپرس نگه داشت و کد بارگذار بدون تنظیم اضافه این را مدیریت میکند. فایل را منتقل کنید و بعد بررسی کنید که سایت هنوز بالا میآید. این انتقال دو محدودیت دارد:
- پوشه والد نمیتواند نصب دیگری از وردپرس داشته باشد. بارگذار پوشه والدی را که
wp-settings.phpخودش را دارد نادیده میگیرد. - یک سطح بالاتر فقط وقتی خصوصی است که وردپرس در ریشه وب باشد. اگر وردپرس در زیرپوشهای مانند
/blog/باشد، یک سطح بالاتر معمولاً هنوز عمومی است.
همان راهنما میگوید برخی معتقدند این انتقال فایده امنیتی ناچیزی دارد و اگر بیاحتیاط انجام شود ممکن است آسیبپذیریهای جدی ایجاد کند. پس آن را اختیاری بدانید. برای Apache، راهنما این بلوک را هم برای بالای فایل .htaccess میدهد که درخواستهای مستقیم به فایل را رد میکند:
<Files "wp-config.php">
Require all denied
</Files>
راهنمای امنیت .htaccess ما این قانون را در کنار قانونهای دیگر توضیح میدهد.
مجوزهای فایل wp-config.php
مستندات وردپرس بسته به شرایط، عددهای کمی متفاوت میدهد:
- راهنمای امنسازی میگوید فقط شما و وبسرور باید بتوانید فایل را بخوانید، که به گفته آن معمولاً یعنی 400 یا 440.
- راهنمای مجوزهای فایل برای هاست اشتراکی با suexec عدد 440 یا 400 را میگوید تا کاربران دیگر سرور نتوانند آن را بخوانند. همچنین 600 را به عنوان نمونه ایمن نشان میدهد.
- برای فایلهای معمولی وردپرس، همان راهنما 644 یا 640 را میگوید.
اینکه کدام عدد کار کند به کاربر سیستمی بستگی دارد که وبسرور با آن اجرا میشود. وبسرور باید بتواند فایل را بخواند، پس اگر پس از تغییر سایت بالا نیامد، به مقدار قبلی برگردید و از هاست خود بپرسید کدام مقدار با تنظیماتش سازگار است.
اشتباهات رایج
- چسباندن تنظیم بعد از خط
wp-settings.php. این خط وردپرس را بارگذاری میکند و پیشفرضهایش را تعیین میکند. ثابت PHP نمیتواند در حین اجرای اسکریپت تغییر کند، پس خط شما اثری ندارد. - تعریف یک تنظیم برای دو بار. خط اول مقدار را تعیین میکند و خط دوم نمیتواند آن را تغییر دهد. راهنمای PHP میگوید تعریف دوباره یک ثابت از PHP 8.5 منسوخ شده است، پس ممکن است پیامی هم نمایش داده شود. پیش از افزودن، نام را در فایل جستجو کنید.
- گذاشتن علامت نقل قول دور true یا false. مقدار
'false'یک رشته غیرخالی است و PHP آن را true میداند.falseرا بدون علامت نقل قول بنویسید. اندازههایی مانند'256M'به آن نیاز دارند. - علامت نقل قول خمیده از واژهپرداز یا صفحه وب. PHP به علامت نقل قول صاف نیاز دارد، پس نوع خمیده خطایی ایجاد میکند که مانع بالا آمدن سایت میشود.
- نمایش خطاهای اشکالزدایی در سایت زنده. مقدار پیشفرض
WP_DEBUG_DISPLAYبرابرtrueاست، پس اگر فقطWP_DEBUGرا روشن کنید، خطاها در صفحه برای بازدیدکنندگان دیده میشوند. راهنمای محل گزارش اشکالزدایی نشان میدهد چطور آنها را به فایل بفرستید. - روشن گذاشتن
WP_ALLOW_REPAIR. مستندات میگوید آن را فقط هنگام نیاز فعال کنید و پس از حل مشکل غیرفعالش کنید.
پرسشهای متداول
فایل wp-config.php در وردپرس چیست؟
فایل پیکربندیای است که وردپرس هنگام شروع به کار بارگذاری میکند. اطلاعات ورود پایگاه داده، کلیدهای امنیتی و پیشوند جدولها در آن است و تنظیماتی مانند WP_DEBUG یا WP_MEMORY_LIMIT را هم در آن اضافه میکنید.
فایل wp-config.php کجاست؟
معمولاً در ریشه نصب وردپرس، همان پوشهای که wp-admin، wp-includes و wp-content هم در آن هستند. وردپرس آن را یک پوشه بالاتر از محل نصب هم میپذیرد، به شرطی که آن پوشه wp-settings.php نداشته باشد.
کد را کجای wp-config.php اضافه کنم؟ بالای خطی که میگوید That’s all, stop editing! Happy publishing. (تمام شد، ویرایش را متوقف کنید! انتشار خوبی داشته باشید.) در فایلهای قدیمیتر Happy blogging نوشته شده است. آخرین خط زیر آن وردپرس را بارگذاری میکند، پس تنظیمی که بعد از آن خط بگذارید دیر میرسد.
آیا ویرایش wp-config.php امن است؟ بله، اگر نسخه پشتیبان داشته باشید و از ویرایشگر متن ساده استفاده کنید. یک غلط تایپی میتواند مانع بارگذاری کل سایت شود، از جمله wp-admin، پس اول یک نسخه دانلود کنید. اگر سایت پس از ویرایش خراب شد، نسخه را برگردانید.
اگر wp-config.php را حذف کنم چه میشود؟ وردپرس دیگر اطلاعات ورود پایگاه داده را پیدا نمیکند و فرایند راهاندازی را با درخواست ساخت فایل پیکربندی شروع میکند. محتوای شما در پایگاه داده میماند، پس بازگرداندن نسخه پشتیبان یا ساخت دوباره فایل با همان اطلاعات، سایت را دوباره متصل میکند.
فایل wp-config.php باید چه مجوزهایی داشته باشد؟ راهنمای امنسازی وردپرس میگوید فقط شما و وبسرور باید بتوانید آن را بخوانید، که معمولاً یعنی 400 یا 440. راهنمای مجوزهای فایل آن 600 را هم نشان میدهد. وبسرور همچنان باید بتواند فایل را بخواند، پس اگر سایت بالا نیامد از هاست خود بپرسید.
منابع
- WordPress Advanced Administration: wp-config.php، Hardening WordPress، File permissions، Editing files
- کد منبع وردپرس: 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 در وردپرس چیست؟
فایل پیکربندیای است که وردپرس هنگام شروع به کار بارگذاری میکند. اطلاعات ورود پایگاه داده، کلیدهای امنیتی و پیشوند جدولها در آن است و تنظیماتی مانند WP_DEBUG یا WP_MEMORY_LIMIT را هم در آن اضافه میکنید.
فایل wp-config.php کجاست؟
معمولاً در ریشه نصب وردپرس، همان پوشهای که wp-admin، wp-includes و wp-content هم در آن هستند. وردپرس آن را یک پوشه بالاتر از محل نصب هم میپذیرد، به شرطی که آن پوشه wp-settings.php نداشته باشد.
کد را کجای wp-config.php اضافه کنم؟
بالای خطی که میگوید That's all, stop editing! Happy publishing. (تمام شد، ویرایش را متوقف کنید! انتشار خوبی داشته باشید.) در فایلهای قدیمیتر Happy blogging نوشته شده است. آخرین خط زیر آن وردپرس را بارگذاری میکند، پس تنظیمی که بعد از آن خط بگذارید دیر میرسد.
آیا ویرایش wp-config.php امن است؟
بله، اگر نسخه پشتیبان داشته باشید و از ویرایشگر متن ساده استفاده کنید. یک غلط تایپی میتواند مانع بارگذاری کل سایت شود، از جمله wp-admin، پس اول یک نسخه دانلود کنید. اگر سایت پس از ویرایش خراب شد، نسخه را برگردانید.
اگر wp-config.php را حذف کنم چه میشود؟
وردپرس دیگر اطلاعات ورود پایگاه داده را پیدا نمیکند و فرایند راهاندازی را با درخواست ساخت فایل پیکربندی شروع میکند. محتوای شما در پایگاه داده میماند، پس بازگرداندن نسخه پشتیبان یا ساخت دوباره فایل با همان اطلاعات، سایت را دوباره متصل میکند.
فایل wp-config.php باید چه مجوزهایی داشته باشد؟
راهنمای امنسازی وردپرس میگوید فقط شما و وبسرور باید بتوانید آن را بخوانید، که معمولاً یعنی 400 یا 440. راهنمای مجوزهای فایل آن 600 را هم نشان میدهد. وبسرور همچنان باید بتواند فایل را بخواند، پس اگر سایت بالا نیامد از هاست خود بپرسید.