Редактиране на wp-config.php файла в нашия WordPress сайт

12 ян. 2020 | Защита
Настройване на файла wp-config.php

Един от най-важните файлове на WordPress инсталацията е конфигурационният. Той се намира в главната директория и съдържа дефиниции и PHP инструкции, чрез които караме WordPress да работи по начин, по който искаме ние.

Файлът wp-config.php съхранява информация, като данни за свързване с базата данни, префикса на таблиците, пътищата към определени директории и много други специфични настройки.

Когато за първи път инсталираме WordPress, трябва да въведем най-необходимата информация за базата данни, като име на базата, име на потребителя, който ще работи с базата, парола за достъп и префикса на таблиците.

След като зададем стойностите за тези полета, те ще се съхранят във wp-config.php файла. А ето и как изглежда базовият файл:

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'database_name_here');

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

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

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

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

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

/* Authentication Unique Keys and Salts. */
define('AUTH_KEY',		'put your unique phrase here');
define('SECURE_AUTH_KEY',	'put your unique phrase here');
define('LOGGED_IN_KEY',	        'put your unique phrase here');
define('NONCE_KEY',		'put your unique phrase here');
define('AUTH_SALT',		'put your unique phrase here');
define('SECURE_AUTH_SALT',	'put your unique phrase here');
define('LOGGED_IN_SALT',	'put your unique phrase here');
define('NONCE_SALT',		'put your unique phrase here');

/* MySQL database table prefix. */
$table_prefix  = 'wp_';

/** For developers: WordPress debugging mode. */
define('WP_DEBUG', false);

/* That's all, stop editing! Happy blogging. */

/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');

/** Sets up WordPress vars and included files. */
require_once(ABSPATH . 'wp-settings.php');

Забележка: Дефинициите и PHP инструкциите идват в определен ред, който не трябва да променяме. И никога не трябва да добавяме съдържание под следния ред:

/* That's all, stop editing! Happy blogging. */

След основните детайли в базата данни следват осем ключа за сигурност, които ще направят сайта по-защитен срещу хакери. Желателно е ‘put your unique phrase here’ да бъде заменено с произволен низ от букви, цифри, специални символи. За по-лесно можем да използваме и онлайн генератор.

В крайна сметка генерираният код изглежда по подобен начин:

define('AUTH_KEY',         'lghSd:S&dQX8#+sAs,g%AI##C}_h 5X_~,m}]36a%[email protected]@h1(2c-ZHs2');
define('SECURE_AUTH_KEY',  '[%(N+KT.53zuu,`Yv #[email protected],|dqXqM7<llzly2~;e;fv-&>mq~ S!^VT>t=Di;dL');
define('LOGGED_IN_KEY',    '-W4x&>l>N;`]>7Bx_d/Z]xG)|kR54B9Rs-5p*CLWyzTt+e.)J<7s_=58f|[`w`Jt');
define('NONCE_KEY',        'M]!ZehHwB+cTawN3H|(T^[<^zF{g0&[+O-Fv.XB>PDo [email protected]');
define('AUTH_SALT',        '-2eQp^S#^/xBbL$m)JXdNje!l7n/m(/RL{-}BW1y5|vizh>GNUq(fja6U1vb|g/*');
define('SECURE_AUTH_SALT', 'E[.m+q%<um=f-54u{kr;x]$s*x^xz_=n|]ryo041%d?[-w2{28gvo:_jntzkh)+`');
define('LOGGED_IN_SALT',   'go[u,ybt^:gm+zrb4f-6gm4.9zmdjp-420rpih^>Th~6!w0AFDoDy~Z)mp3t!EDc');
define('NONCE_SALT',       'YiPg8+5)YT./0:ixd|n<marvah4]}z$se([email protected]~<o$umb`k#[qrizj4z!b1hw1');

Променливата $table_prefix съхранява префикса на всички таблици в WordPress. Повече от желателно е още в началото да променим стойността му по подразбиране ‘wp_’ с някаква персонализирана стойност ‘myprefix_’, за да защитим базата данни на WordPress от уязвимост. За да променим впоследствие префикса на таблицата в работещ уебсайт, трябва да стартираме няколко заявки към базата данни, след което ръчно да редактираме файла wp-config.php.

Всеки път, когато запазваме редакциите си, WordPress добавя ред в таблицата с публикации, така че да можем да възстановим предишните ревизии на публикации и страници. Това е полезна функционалност, която може да се превърне в проблем, когато нашият сайт се разраства. Имаме възможност да намалим максималния брой запазени редакции, които да се съхраняват, или изобщо да деактивираме тази функционалност.

Ако искаме да деактивираме редакциите след публикуване, дефинираме следната константа:

define( 'WP_POST_REVISIONS', false );

Ако искаме да ограничим максималния брой ревизии, вместо да ги деактивираме, добавяме следния ред със стойност по желание:

define( 'WP_POST_REVISIONS', 5 );

Също така можем да увеличим интервала на запазване на ревизиите, който по подразбиране в WordPress e 60 секунди:

define( 'AUTOSAVE_INTERVAL', 120 );

Възможно е да получаваме съобщения за грешки, които ни казват, че „Разрешеният размер на паметта от xxx байта е изчерпан“ (Allowed memory size of xxx bytes exhausted…). Максималният размер на паметта зависи от конфигурацията на сървъра. В случай че нямаме достъп до php.ini файл, можем да увеличим ограничението на паметта само за WordPress, като зададем константата WP_MEMORY_LIMIT във wp-config файла. По подразбиране WordPress автоматично се опитва да увеличи лимита на PHP памет, ако е по-малък от 64MB. Те обаче може да не са ни достатъчни. Можем да зададем по-висока стойност чрез следния ред:

define( 'WP_MEMORY_LIMIT', '128M' );

От версия 3.7 насам WordPress поддържа автоматични актуализации до новите по-сигурни версии. Това е полезна функция, която обаче можем да деактивираме. Спирането на автоматичните актуализации става чрез дефиниране на следната константа:

define( 'AUTOMATIC_UPDATER_DISABLED', true );

Можем да преместим директорията wp-content, която съдържа нашите теми, плъгини и качени файлове, извън директорията по подразбиране на WordPress.

Задаваме за WP_CONTENT_DIR пълния локален път към тази директория (без наклонена черта в края), например:

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

Задаваме за WP_CONTENT_URL пълния URL адрес на тази директория (отново без наклонена черта в края), например:

define( 'WP_CONTENT_URL', 'http://example/ourdir/wp-content' );

По същия начин преместваме и папката с плъгините:

define( 'WP_PLUGIN_DIR', dirname(__FILE__) . '/ourdir/wp-content/plugins' );
define( 'WP_PLUGIN_URL', 'http://example/ourdir/wp-content/plugins' );

Преместване на папката за качвания на файлове Uploads. Този път не може да бъде абсолютен. Той винаги е относителен към ABSPATH, затова не изисква наклонена черта в началото:

define( 'UPLOADS', 'ourdir/wp-content/uploads' );

Папката с темите не може да бъде местена, тъй като в кода на WordPress нейният път е релативно свързан с папката wp-content:

$theme_root = WP_CONTENT_DIR . '/themes';

С цел защита е добре да администрираме сайта си през SSL. Ако сме закупили SSL сертификат и той е правилно конфигуриран, можем да принудим WordPress да прехвърля данни през SSL във всяка сесия за влизане и администриране. Използваме следната константа:

define( 'FORCE_SSL_ADMIN', true );

Вече знаем, че wp-config.php е един от най-важните WordPress файлове. Така че защо да не го скрием от хакерите? Ако уебсайтът ни работи на уеб сървър Apache, който е най-разпространеният, можем да добавим следните директиви в нашия .htaccess файл:

<files wp-config.php="">
order allow,deny
deny from all
</files>

Има още много настройки, които могат да се направят във wp-config.php файла, но те са за по-напреднали потребители. На първо време показаните по-горе са достатъчни.