سه شنبه, ۲ مرداد, ۱۴۰۳

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

HOW TO SETUP WORDPRESS CONFIGURATION FILE WP-CONFIG.PHP

فایل wp-config.php یکی از مهم­ترین فایل­‌ها در نصب وردپرس فایل پیکربندی آن است. فایل پیکربندی در شاخه اصلی وردپرس قرار دارد و شامل تعاریف ثابت و دستورالعمل­‌های php است که موجب می‌شود وردپرس مطابق خواست شما کار کند.

فایل wp-config.php داده­‌هایی مثل جزئیات اتصال به پایگاه داده، پیشوند جدول پایگاه داده، مسیرهایی به دایرکتوری خاص و بسیاری از تنظیمات مربوط به ویژگی‌های خاص که ما می‌­خواهیم در این مطلب به آن‌ها بپردازیم را شامل می‌شود.

اطلاعات اولیه فایل wp-config.php

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

اما وقتی در حال اجرا کردن نصب ۵ دقیقه ­ای به صورت دستی هستید، از شما خواسته می‌شود که بعضی از داده‌های ذخیره شده در wp-config را وارد کنید.

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

در زیر محتوای پایه این فایل نوشته شده است :

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 توسط برنامه نویسان خبره نت افراز نوشته شده است که می‌توانید جهت مدیریت فایل‌ها در دایرکت ادمین از آن استفاده کنید
افزونه AXFilePro
افزونه 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-config.php

امکان تغییر مکان پوشه 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 برای کاربرانتان تغییر دهید.

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

سایر تنظیمات :

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/

در این نوشته میخوانید ...

دیدگاهتان را بنویسید

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