آموزش تنظیم فایل کانفیگ وردپرس wp-config.php

فایل wp-config.php : یکی از مهمترین فایل ها در نصب وردپرس فایل پیکربندی آن است. فایل پیکربندی در شاخه اصلی وردپرس قرار دارد و شامل تعاریف ثابت و دستورالعمل های php است که موجب می شود وردپرس مطابق خواست شما کار کند.
فایل wp-config.php داده هایی مثل جزئیات اتصال به پایگاه داده، پیشوند جدول پایگاه داده، مسیرهایی به دایرکتوری خاص و بسیاری از تنظیمات مربوط به ویژگی های خاص که ما می خواهیم در این مطلب به آنها بپردازیم را شامل میشود.
در این مقاله به موارد زیر خواهیم پرداخت :
- اطلاعات اولیه
- پیکر بندی پیش فرض: ویرایش سیستم فایل
- فعال کردن حالت تعمیر و بهینه سازی وردپرس
- تنظیمات محتوای وردپرس در فایل wp-config.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 را نصب کنید تا نام های جداول پایگاه داده و زمینه آنها را تغییر داده و فایل پیکربندی را بدون خطر بروز رسانی کند.
توجه:
قبل از انجام این تمرین حتما یک پشتیبان از فایل ها و پایگاه دادههای وردپرس تهیه کنید، حتی اگر پیشوندهای جدول را با یک افزونه تغییر می دهید.
همانطور که می دانید در سرویس های ما افزونه ای به نام AXFilePro توسط برنامه نویسان خبره نت افراز نوشته شده است که می توانید جهت مدیریت فایل ها در دایرکت ادمین از آن استفاده کنید

پیکر بندی پیش فرض: ویرایش سیستم فایل
سیستم فایلهای وردپرس به خوبی توسط کاربران و هکرها شناخته شده است. به این دلیل بهتر است شما تغییراتی ساختاری در فایلها را از طریق تغییر مکان پوشه هایی خاص و تنظیم 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 را روی صفر تنظیم کرده و بنابراین پیغام خطا روی صفحه ی سایت نمایش داده نمی شود.
wp-config هرگز کش نمی شود و به همین دلیل، جای خوبی برای لغو تنطیمات php.ini است.
یکی دیگر از ثابت های اشکال زدایی ورژن اسکریپت ها و سبک ها را تعیین میکند تا بارگیری شوند. اگر می خواهید نسخه های غیرفشرده را بارگیری کنید 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', '۱۲۸M' );
همچنین در صورت نیاز میتوانید حداکثر اندازه حافظه را طبق عبارت زیر تنظیم کنید:
define( 'WP_MAX_MEMORY_LIMIT', '۲۵۶M' );
بروز رسانی خودکار
از وردپرس ۳.۷ به بعد قابلیت بروزرسانی خودکار به وردپرس اضافه شد. این یک ویژگی مهم است که به مدیران سایت امکان امن نگه داشتن سایتشان را می دهد.
می توانید تمامی بروز رسانی های خودکار را با تعریف ثابت زیر غیر فعال کنید:
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 تعریف کرد. بعضی از این ثابت ها کاربردی مشترک دارند و درک عملکرد آنها آسان است. ثابت های دیگر ویژگی های پیشرفته را فعال می کنند که نیاز به دانش عمیق از وردپرس و مدیریت سایت دارند.
بازدیدها: ۰