آموزش تنظیم فایل کانفیگ وردپرس wp-config.php
HOW TO SETUP WORDPRESS CONFIGURATION FILE WP-CONFIG.PHP
حسین نیکدل۴ روز پیشآخرین به روز رسانی: ۱۴۰۳/۰۴/۰۶

فایل wp-config.php یکی از مهمترین فایلها در نصب وردپرس فایل پیکربندی آن است. فایل پیکربندی در شاخه اصلی وردپرس قرار دارد و شامل تعاریف ثابت و دستورالعملهای php است که موجب میشود وردپرس مطابق خواست شما کار کند.
فایل wp-config.php دادههایی مثل جزئیات اتصال به پایگاه داده، پیشوند جدول پایگاه داده، مسیرهایی به دایرکتوری خاص و بسیاری از تنظیمات مربوط به ویژگیهای خاص که ما میخواهیم در این مطلب به آنها بپردازیم را شامل میشود.
اطلاعات اولیه فایل wp-config.php
وقتی برای اولین بار وردپرس نصب میکنید از شما خواسته میشود که اطلاعات موردنیاز مثل جزئیات پایگاه داده و شاخص جدول را وارد کنید. برخی اوقات وردپرس شما به وسیله میزبانتان تنظیم خواهد شد و نیازی به اجرای تنظیمات به صورت دستی نخواهید داشت.
اما وقتی در حال اجرا کردن نصب ۵ دقیقه ای به صورت دستی هستید، از شما خواسته میشود که بعضی از دادههای ذخیره شده در wp-config را وارد کنید.
در زیر محتوای پایه این فایل نوشته شده است :
define('DB_NAME','database_name_here');
define('DB_USER','username_here');
define('DB_PASSWORD','password_here');
define('DB_HOST','localhost');
define('DB_CHARSET','utf8');
define('DB_COLLATE', '');
define('AUTH_KEY','');
define('SECURE_AUTH_KEY','');
define('LOGGED_IN_KEY','');
define('NONCE_KEY','');
define('AUTH_SALT','');
define('SECURE_AUTH_SALT','');
define('LOGGED_IN_SALT','');
define('NONCE_SALT','');
$table_prefix = 'wp_';
معمولا، هنگام اجرا تنظیمات، این فایل به طور اتوماتیک ایجاد میشود، اما بعضی اوقات وردپرس دسترسی لازم برای نوشتن در پوشه نصب را ندارد. در این وضعیت شما باید یک فایل wp-config.php خالی بسازید و محتوا را از wp-config-sample.php کپی کرده و مقادیر مناسب برای تمامی ثابتهای تعریف شده را تنظیم کنید. وقتی این کارها را انجام دادید، فایلتان را به پوشه اصلی انتقال داده و وردپرس را اجرا کنید.
توجه:
تعاریف ثابت و دستورالعملهای php در یک فرمان خاص میآیند، هرگز نباید آن را تغییر داد یا پایین خط توضیحات محتوا اضافه کرد.
نخست باید تعاریف ثابتهای پایگاه داده را از میزبان خود دریافت کنید:
- DB-NAME (نام پایگاه داده)
- DB-USER (نام کاربر پایگاه داده)
- DB-PASSWORD (رمز کاربر پایگاه داده)
- DB-HOST (میزبان)
در جزئیات پایگاه داده، هشت کلید امنیتی، سایت را در برابر هکرها محافظت میکند. هنگامی که فایل نصب را اجرا میکنید، وردپرس به طور خودکار کلیدهای امنیتی و salt را ایجاد میکند، البته امکان تغییر آنها در هر زمانی وجود داشته و میتوانید رشته دلخواه خود را اضافه کنید.
متغیر Stable-prefix پیشوند همه جداول وردپرس را ذخیره میکند. متاسفانه همه ارزش پیش فرض آن را میدانند و این میتواند پایگاه داده وردپرس را آسیب پذیر کند، به آسانی میتوان با تنظیم یک مقدار سفارشی برای متغیر $table-prefix در هنگام اجرای راه اندازی، آن را تصحیح کرد.
برای تغییر دادن پیشوند جدول در یک وب سایت فعال، باید چندین کوئری در پایگاه داده اجرا کنید، سپس فایل wp-config.php را بطور دستی ویرایش کنید. اگر به پایگاه داده دسترسی ندارید یا دانش لازم برای تغییر پیشوند جداول وردپرس را ندارید، میتوانید افزونههایی مثل Brozzme DB Prefix را نصب کنید تا نامهای جداول پایگاه داده و زمینه آنها را تغییر داده و فایل پیکربندی را بدون خطر بروز رسانی کند.
توجه:
قبل از انجام این تمرین حتما یک پشتیبان از فایلها و پایگاه دادههای وردپرس تهیه کنید، حتی اگر پیشوندهای جدول را با یک افزونه تغییر میدهید.

پیکر بندی پیش فرض (ویرایش سیستم فایل)
سیستم فایلهای وردپرس به خوبی توسط کاربران و هکرها شناخته شده است. به این دلیل بهتر است شما تغییراتی ساختاری در فایلها را از طریق تغییر مکان پوشههایی خاص و تنظیم URLs مربوطه و ثبت مسیرها در فایل wp-config، ایجاد کنید.
ابتدا میتوان پوشه محتوا را از طریق تعریف دو ثابت، تغییر مکان داد.
اولین مورد مسیر دایرکتوری کامل را تعیین میکند
define ( ‘WP_CONTENT_DIR’, dirname(__FILE__) . ‘/site/wp-content’ );
دومین مورد URL دایرکتوری جدید را تنظیم میکند
define ( ‘WP_CONTENT_URL’, ‘http://example.com/site/wp-content’ );
میتوان پوشه پلاگین را صرفا با تعریف ثابتهای زیر تغییر مکان داد:
define ( ‘WP_PLUGIN_DIR’, dirname(__FILE__) . ‘/wp-content/mydir/plugins’ );
define ( ‘WP_CONTENT_URL’, ‘http://example.com/site/wp-content’ );
به همان شیوه میتوانیم پوشه آپلودها را با تنظیم مسیر جدید دایرکتوری، تغییر مکان دهیم.
define('UPLOADS','wp-content/mydir/uploads');
پس از اتمام کار، پوشهها را مرتب کرده و وردپرس را مجددا بارگذاری کنید.
امکان تغییر مکان پوشه wp-content/theme وجود ندارد. اما میتوان یک دایرکتوری قالب جدید را در یک پلاگین یا یک فایل توابع قالب، ثبت کرد.
فعال کردن حالت تعمیر و بهینه سازی وردپرس
اگر یک توسعه دهنده هستید، میتوانید وردپرس را وادار به نمایش خطاها و اخطارهایی کنید که به شما در اشکال زدایی قالب و پلاگین کمک خواهد کرد. برای فعال کردن حالت اشکال زدایی فقط باید مقدار WP-DEBUG را به true (صحیح) تنظیم کنید، همانطور که در زیر نشان داده شده است:
define( 'WP_DEBUG', true );
wp-DEBUG به طور پیش فرض false (غیر فعال) تنطیم شده است. اگر مجبور به غیرفعال کردن حالت اشکال زدایی هستید، فقط میتوانید مشخصات را حذف کرده یا مقدار ثابت را به false تنظیم کنید.
هنگامی که شما در یک سایت فعال کار میکنید، باید حالت اشکال زدایی را غیرفعال کنید. هرگز نباید خطاها و اخطارها به بازدید کنندگان سایت نشان داده شود زیرا این مسئله میتواند اطلاعات ارزشمندی در اختیار هکرها قرار دهد. اما اگر مجبور به اشکال زدایی شدید باید چکار کنید؟
در چنین شرایطی میتوانید وردپرس را مجبور کنید حافظه را از خطاها و اخطارهایی که در فایل debug.log از پوشه wp-content قرار گرفته، حفظ کنید. برای فعال کردن این ویژگی، کد زیر را در فایل wp-config.php تان، کپی و جایگذاری کنید:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
@ini_set('display_errors', ۰);
برای اینکه این ویژگی موثر واقع شود ابتدا نیاز به فعال کردن حالت اشکال زدایی داریم. سپس WP-DEBUG-LOG را به true تنظیم کنید ما وردپرس را مجبور به ذخیره پیامها در فایل debug.log میکنیم، در حالیکه با تعریف WP-DEBUG-DISPLAY به false آنها را از صفحه نمایش پنهان میکنیم.
درنهایت مقدار متغیر PHP خطاهای صفحه نمایش یا display-errors را روی صفر تنظیم کرده و بنابراین پیغام خطا روی صفحه ی سایت نمایش داده نمیشود.
یکی دیگر از ثابتهای اشکال زدایی ورژن اسکریپتها و سبکها را تعیین میکند تا بارگیری شوند. اگر میخواهید نسخههای غیرفشرده را بارگیری کنید SCRIPT-DEBUG را به true تغییر دهید:
define( 'SCRIPT_DEBUG', true );
اگر قالب یا پلاگین شما دادههای بازیابی شده از پایگاه داده را نشان دهد، ممکن است بخواهید جزئیات جستار را برای بازبینیهای بعدی ذخیره کنید.
ثابت SAVEQUERIES (ذخیره جستارها) وردپرس را مجبور به ذخیره اطلاعات جستارها در آرایهqueries $wpdb- میکند. این جزئیات با افزودن کد زیر به الگو پاورقی نشان داده خواهد شد.
if (current_user_can('administrator'))
{
global $wpdb;
echo '<pre>';
print_r( $wpdb->queries );
echo '</pre>';
}
تنظیمات محتوای وردپرس در فایل wp-config.php
هنگامی که وب سایتتان توسعه مییابد ممکن است بخواهید تعداد پیش نویسهای پستهای سایت را کاهش دهید. به طور پیش فرض، وردپرس به طور خودکار هر ۶۰ ثانیه پیش نویسهای پستها را ذخیره میکند. ما میتوانیم این مقدار را با تنظیم فاصله زمانی سفارشی در wp-config همانند زیر تغییر دهیم:
define( 'AUTOSAVE_INTERVAL', ۱۶۰ );
البته همچنین میتوانید مدت زمان ذخیره خودکار را کاهش دهید.
هر بار که پیش نویس هایمان را ذخیره کنیم وردپرس یک ردیف به جدول پستها اضافه میکند به طوری که میتوانیم پیش نویسهای قبلی پستها و صفحات را ذخیره کنیم. اینکار یک کارآیی مفید است اما هنگامی که سایت توسعه یابد میتوان به یک مشکل تبدیل شود. خوشبختانه میتوان حداکثر تعداد پیش نویسها را کاهش داد.
اگر میخواهید پیش نویسها پست را غیرفعال کنید، ثابت زیر را تعریف کنید:
define( 'WP_POST_REVISIONS', false );
یا اگر میخواهید حداکثر تعداد پیش نویسها را محدود کنید، خط زیر را اضافه کنید:
define( 'WP_POST_REVISIONS', ۱۰ );
وردپرس به طور پیش فرض پستها، صفحات، فایلهای پیوست و نظرات حذف شده (سطل زباله یا بازیافت) را به مدت ۳۰ روز ذخیره میکند و سپس آنها را بطور دائمی حذف میکند. میتوانیم این مقدار را با ثابت زیر، تغییر دهیم:
define( 'EMPTY_TRASH_DAYS', ۱۰ );
حتی میتوان trash (سطل زباله) را غیر فعال کرد، برای اینکار مقدار آن را روی صفر تنظیم کنید.
اندازه حافظه مجاز
گاهی اوقات ممکن است پیامی مشابه زیر دریافت کنید:
Fatal error: Allowed memory size of xxx bytes exhausted
حداکثر اندازه حافظه به پیکربندی سرور بستگی دارد. در صورتی که به فایل php.ini دسترسی ندارید، میتوانید اندازه حافظه را تنها برای وردپرس افزایش دهید با تنظیم ثابت wp-memory-limit در فایل wp.config. به طور پیش فرض وردپرس تلاش میکند ۴۰ مگابایت از حافظه را به PHP برای سایتهای تک کاره و ۶۴ مگابایت برای سایتهای چندکاره (وردپرس گروهی) اختصاص دهد. البته اگر حافظه اختصاص یافته به PHP بیشتر از ۴۰ یا ۶۴ مگابایت است، وردپرس بیشترین مقدار را اتخاذ خواهد کرد.
به این ترتیب میتوانید مقدار دلخواه را طبق خط زیر تنظیم کنید:
define( 'WP_MEMORY_LIMIT', '128M' );
همچنین در صورت نیاز میتوانید حداکثر اندازه حافظه را طبق عبارت زیر تنظیم کنید:
define( 'WP_MAX_MEMORY_LIMIT', '256M' );
بروز رسانی خودکار
از وردپرس ۳.۷ به بعد قابلیت بروزرسانی خودکار به وردپرس اضافه شد. این یک ویژگی مهم است که به مدیران سایت امکان امن نگه داشتن سایتشان را میدهد.
میتوانید تمامی بروز رسانیهای خودکار را با تعریف ثابت زیر غیر فعال کنید:
define( 'AUTOMATIC_UPDATER_DISABLED', true );
شاید این ایده خوبی برای غیر فعال کردن بروز رسانیهای امن نباشد، اما در هر صورت انتخاب با شماست.
به طور پیش فرض بروز رسانیهای خودکار با نسخههای اصلی کار نمیکند، اما میتوانید هر گونه بروز رسانی حافظه را با تعریف WP-AUTO-UPDATE-CORE فعال کنید به شرح زیر:
define( 'WP_AUTO_UPDATE_CORE', false );
define( 'WP_AUTO_UPDATE_CORE', true );
مقدار پیش فرض minor است:
define( 'WP_AUTO_UPDATE_CORE', 'minor' );
تنظیمات امنیتی
میتوان از فایل wp-config برای بالا بردن امنیت سایت استفاده کرد. علاوه بر تغییرات در ساختار فایل که در بالا مشاهده کردید، میتوان برخی از ویژگیهایی را که آسیب پذیریهای غیر ضروری را آشکار میکند را قفل کرد. اول از همه باید ویرایشگر فایل ارائه شده در پنل مدیریت را غیر فعال کرد. ثابت زیر صفحه ویرایشگر ظاهر را مخفی خواهد کرد:
define( 'DISALLOW_FILE_EDIT', true );
توجه: در نظر داشته باشید اگر این ثابت true تعریف شده باشد، برخی از پلاگینها نمیتوانند به درستی کار کنند.
مدیریت روی SSL یک ویژگی امنیتی است. اگر یک گواهی نامه SSL خریداری کردهاید که به درستی پیکربندی شده، میتوانید وردپرس را با استفاده از ثابت زیر وادار به انتقال داده روی SSL در هر جلسه ورودی و مدیریتی کنید:
define( 'FORCE_SSL_ADMIN', true );
دو ثابت دیگر که امکان مسدود کردن درخواستهای خارجی و لیست میزبانهای پذیرفته شده را فراهم میکنند:
define('WP_HTTP_BLOCK_EXTERNAL',true);
define('WP_ACCESSIBLE_HOSTS', 'a.com,*.a.com');
@ini_set('session.cookie_httponly', true); @ini_set('session.cookie_secure', true); @ini_set('session.use_only_cookies', true);
در این مثال، ابتدا تمام دسترسیها از میزبانهای خارجی را غیرفعال کردیم، سپس میزبانهای مجاز را لیست کرده، آنها را با کاما جدا کردیم.
تنظیمات پیشرفته
اگر WP-CACHE (حافظه پنهان) را به true تنظیم کنید اسکریپت wp-content/advanced-cache.php فعال میگردد.
define('WP_CACHE', true);
از نسخه ۲.۹، وردپرس به طور خودکار بهینه سازی پایگاه داده را پشتیبانی میکند. با تشکر از این ویژگی، با تنظیم WP-ALLOW-REPAIR به true، وردپرس به طور خودکار پایگاه داده خراب را اصلاح میکند.
define('WP_ALLOW_REPAIR', true); http://domain/wp-admin/maint/repair.php
هر بار که یک تصویر را ویرایش میکنید وردپرس یک مجموعه تصاویر جدید را ایجاد میکند. اگر میخواهید تصویر اصلی به محل اولیه خود برگردانده شود، تمام مجموعه های ایجاد شده بر روی سرور باقی میماند. شما میتوانید این عمل را با تنظیم IMAGE-EDIT-OVERWRITE به true جانویسی کنید، به طوری که با بازیابی تصویر، تمام ویرایشها از سرور حذف خواهند شد.
define( 'IMAGE_EDIT_OVERWRITE', true );
قفل wp-config.php
اکنون میدانیم که چرا wp-config.php یکی از مهمترین فایلهای وردپرس است. پس چرا آن را از هکرها مخفی نمیکنیم؟ اول از همه میتوان wp-config را به یک سطح بالاتر از پوشه پایه وردپرس انتقال دهیم (تنها یک سطح). با این حال این تکنیک کمی بحث برانگیز است، بنابراین من پیشنهاد میکنم راهکارهای دیگری برای محافظت از سایت انتخاب کنید. اگر وب سایت شما در حال اجرا بر روی Apache Web Server است، میتوانید دستورالعمل (فرمان) زیر را به فایل htaccess. اضافه کنید:
<files wp-config.php>
order allow,deny
deny from all
</files>
اگر وب سایت در حال اجرا بر روی Nginx است، میتوانید دستور زیر را به فایل پیکربندی اضافه کنید:
location ~* wp-config.php { deny all; }
توجه: این دستورالعمل باید صرفا پس از آن که تنظیمات کامل شد، اضافه شود.
اگر وب سایت شما چندین انتقال را پشت سر گذاشته یا آن را از شخص دیگری خریداری کرده اید، توصیه میشود یک مجموعه تازه از کلیدهای امنیتی وردپرس را ایجاد کنید.
تا کنون وردپرس چهار کلید متفاوت داشته است:
- AUTO-KEY
- SECURE-AUTO-KEY
- LOGGED-IN-KEY
- NONCE-KEY
از لینک زیر میتوانید کلیدهای مد نظر را تولید کنید و سپس به راحتی میتوانید کلیدهای فعلی خود را که در فایل wp.config.php ذخیره شدهاند، بروز رسانی کنید.
https://api.wordpress.org/secret-key/1.1/salt
به طور معمول فایلها در دایرکتوری پایه وردپرس با مقدار ۶۴۴ تنظیم میشود، به این معنی که فایلها قابل خواندن و نوشتن توسط صاحب فایل، قابل خواندن توسط کاربران در گروه صاحب آن فایل و قابل خواندن توسط هر شخص دیگری، هستند. طبق اسناد وردپرس مجوزها در فایل wp.config.php باید برای جلوگیری از خواندن آن توسط سایر کاربران در سرور، به ۴۴۰ یا ۴۰۰ تنظیم شوند. شما به راحتی میتوانید این مجوزها را با استفاده از بخش FTP برای کاربرانتان تغییر دهید.
سایر تنظیمات :
define ( ‘DB_HOST’, ‘۱۲۷.۰.۰.۱:/var/run/mysqld/mysqld.sock’ );
define ( ‘WP_SITEURL’, ‘http://example.com/wordpress’ );
define ( ‘WP_SITEURL’, ‘http://’ . $_SERVER[‘SERVER_NAME’] . ‘/path/to/wordpress’ );
define ( ‘WP_HOME’, ‘http://example.com/wordpress’ );
define ( ‘WP_CONTENT_URL’, ‘http://example/blog/wp-content’ );
define ( ‘WP_PLUGIN_URL’, ‘http://example/blog/wp-content/plugins’ );
define ( ‘UPLOADS’, ‘wp-content/media’ );
define ( ‘COOKIE_DOMAIN’, ‘www.example.com’ );
define ( ‘WP_ALLOW_MULTISITE’, true );
define ( ‘NOBLOGREDIRECT’, ‘http://example.com’ );
define ( ‘CONCATENATE_SCRIPTS’, false );
@ini_set ( ‘log_errors’, ‘Off’ );
define ( ‘DISALLOW_UNFILTERED_HTML’, true );
define ( ‘FORCE_SSL_ADMIN’, true );
define ( ‘WP_HTTP_BLOCK_EXTERNAL’, true );
define ( ‘WP_ACCESSIBLE_HOSTS’, ‘api.wordpress.org,*.github.com’ );
define ( ‘DISALLOW_FILE_EDIT’, true );
define ( ‘DISALLOW_FILE_MODS’, true );
define ( ‘DO_NOT_UPGRADE_GLOBAL_TABLES’, true );
define ( ‘CUSTOM_USER_TABLE’, $table_prefix.’my_users’ );
define ( ‘CUSTOM_USER_META_TABLE’, $table_prefix.’my_usermeta’ );
define ( ‘WPLANG’, ‘de_DE’ );
define ( ‘WP_LANG_DIR’, dirname(__FILE__) . ‘/wordpress/languages’ );
define ( ‘SAVEQUERIES’, true );
define ( ‘ALTERNATE_WP_CRON’, true );
define ( ‘DISABLE_WP_CRON’, true );
!defined (‘SAVE_QUERIES’) && define (‘SAVE_QUERIES’, WP_DEBUG);
!defined (‘ACTION_DEBUG’) && define (‘ACTION_DEBUG’, WP_DEBUG);
خلاصه
در این پست بسیاری از ثابتهای وردپرس را لیست کردیم که میتوان آنها را در فایل پیکربندی wp-config تعریف کرد. بعضی از این ثابتها کاربردی مشترک دارند و درک عملکرد آنها آسان است. ثابتهای دیگر ویژگیهای پیشرفته را فعال میکنند که نیاز به دانش عمیق از وردپرس و مدیریت سایت دارند.
https://www.netafraz.com/blog/wp-config-php-edit-pro/