Конфигурация PHP в WordPress: от wp-config до серверных настроек
Основные методы конфигурации WordPress через PHP
Наиболее эффективный способ управления настройками WordPress - редактирование файла wp-config.php, расположенного в корневой директории сайта. Этот файл загружается до остального ядра и позволяет задавать ключевые параметры: данные базы данных, ключи аутентификации, режим отладки, лимиты памяти и многое другое.
Как правильно редактировать wp-config.php для изменения основных настроек?
Откройте файл wp-config.php и найдите соответствующие строки. Для добавления новых констант используйте define() перед строкой require_once(ABSPATH . 'wp-settings.php');. Пример установки лимита памяти административной панели:
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');Moodle config php (php: конфигурация moodle (config.php))
Константа WP_MEMORY_LIMIT задаёт лимит для фронт-энда, WP_MAX_MEMORY_LIMIT - для панели администратора (обычно выше).
Как настроить отладку и скрыть ошибки?
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);Phpmyadmin config inc php (php: конфигурация phpmyadmin (config.inc.php))
При WP_DEBUG_DISPLAY = false ошибки не выводятся на экран, а записываются в файл wp-content/debug.log.
Как изменить префикс таблиц базы данных?
$table_prefix = 'wp_'; // замените на уникальный префикс, например 'myprefix_'Config config php домен (php: настройка конфигурации для домена)
Рекомендуется изменять префикс до установки WordPress, иначе придётся вручную переименовывать таблицы.
Типичные проблемы
- Синтаксическая ошибка: пропущенная точка с запятой или кавычка - сайт перестаёт работать. Всегда проверяйте синтаксис с помощью
php -l wp-config.php. - Константа определена после wp-settings.php: некоторые константы (например,
WP_HOME) должны быть заданы до подключения ядра. Размещайте их в самом начале файла. - Проблемы с кэшированием: после изменения wp-config.php может потребоваться очистка кэша (плагины, серверный кэш).
Как изменить параметры PHP только для административной панели?
Если требуется увеличить лимиты на загрузку медиафайлов в админке, можно разместить файл .user.ini в директории /wp-admin/. Содержимое файла:
upload_max_filesize = 128M
post_max_size = 130M
memory_limit = 256MWp admin config php (php: конфигурация wordpress (wp-admin/config.php))
Эти настройки будут применяться только к запросам, проходящим через wp-admin. Однако метод работает не на всех хостингах (например, при использовании PHP-FPM через Apache mod_proxy_fcgi).
Если настройки не применяются, проверьте тип обработчика PHP. Для Apache с mod_php проще использовать .htaccess.
Как настроить PHP через .htaccess в wp-admin?
Создайте (или отредактируйте) файл /wp-admin/.htaccess со следующим содержимым:
php_value upload_max_filesize 64M
php_value post_max_size 65M
php_value memory_limit 256MConfig php host (php: настройка host в конфигурационном файле)
Для этого требуется, чтобы на сервере были разрешены директивы AllowOverride Options или AllowOverride All. Если используется mod_php, значения переопределят глобальные настройки.
Ошибка 500 Internal Server Error часто возникает, если модуль mod_php не поддерживает директиву php_value. В таком случае лучше использовать SetEnv или файл php.ini.
Как использовать WP-CLI для изменения конфигурации?
WP-CLI позволяет управлять настройками без ручного редактирования файлов. Установите WP-CLI, затем выполните:
wp config set table_prefix 'newprefix_'
wp config set WP_DEBUG true --raw
wp config set WP_MEMORY_LIMIT 256M --type=constantConfig ini php (php: настройка php.ini)
Команда wp config set автоматически добавляет или обновляет константы в wp-config.php. Флаг --raw записывает значение как есть (без кавычек для булевых).
Если WP-CLI сообщает, что не может найти файл wp-config.php, проверьте, что вы находитесь в корне WordPress или укажите путь через --path=/var/www.
Как создать отдельный конфигурационный файл для административной зоны?
В редких случаях требуется загрузить дополнительные константы только при входе в админку. Для этого создайте плагин (MU-плагин) или отредактируйте wp-config.php, используя условную проверку. Однако константы нельзя объявлять после инициализации WordPress, поэтому правильный подход - фильтр:
add_filter('admin_memory_limit', function($limit) {
return '512M';
});
Этот код помещается в файл плагина или functions.php активной темы. Он изменяет лимит памяти только для страниц панели администратора (фильтр admin_memory_limit).
Не пытайтесь использовать define() внутри is_admin() - константа будет определена слишком поздно и не подействует. Всегда используйте хуки там, где это возможно.
Расширенные примеры конфигурации
Полный файл wp-config.php с оптимальными настройками
Пример (без данных БД) с пояснениями:
<?php
// Начальная секция - БД
define('DB_NAME', 'wordpress');
define('DB_USER', 'root');
define('DB_PASSWORD', 'password');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8mb4');
$table_prefix = 'wpx_';
// Ключи аутентификации (можно сгенерировать на https://api.wordpress.org/secret-key/1.1/salt/)
define('AUTH_KEY', '...');
define('SECURE_AUTH_KEY', '...');
// ... остальные 6 ключей
// Отладка (включена только для локальной разработки)
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
// Память
define('WP_MEMORY_LIMIT', '128M'); // для фронт-энда
define('WP_MAX_MEMORY_LIMIT', '256M'); // для админки (если выше)
// Относительный путь к папке wp-content
define('WP_CONTENT_DIR', dirname(__FILE__) . '/content');
define('WP_CONTENT_URL', 'https://example.com/content');
// Мультисайт (если используется)
// define('WP_ALLOW_MULTISITE', false);
// Прочие полезные константы
define('WP_AUTO_UPDATE_CORE', false); // отключить автообновления
define('DISABLE_WP_CRON', true); // отключить встроенный cron
// Завершение – подключение ядра
require_once(ABSPATH . 'wp-settings.php');
?>
После загрузки файла можно проверить, что все константы определены, выполнив в админке echo WP_MEMORY_LIMIT; (временно). Результат: 128M.
Настройки через .user.ini в wp-admin с проверкой
Создаётся файл /wp-admin/.user.ini с содержимым:
upload_max_filesize = 128M
post_max_size = 130M
max_execution_time = 300
Для проверки применимости настройки зайдите на любую страницу wp-admin, добавив к URL параметр ?phpinfo=1 (если разрешено). Или создайте временный PHP-файл в wp-admin с phpinfo(); и удалите после проверки. Результат (фрагмент):
upload_max_filesize = 128M (локальное значение) post_max_size = 130M max_execution_time = 300
Если вместо локальных значений отображаются глобальные (по умолчанию 2M), значит сервер не поддерживает .user.ini (PHP не в режиме CGI/FastCGI).
Команды WP-CLI для массовой настройки
Пример сессии WP-CLI:
$ wp config list --format=table
+------------------+------------------+----------+
| name | value | type |
+------------------+------------------+----------+
| table_prefix | wp_ | variable |
| DB_NAME | mydb | constant |
| DB_USER | user | constant |
| WP_DEBUG | true | constant |
+------------------+------------------+----------+
$ wp config set WP_DEBUG false --raw
Успешно: обновлена константа 'WP_DEBUG'.
$ wp config get WP_DEBUG
false
Команда wp config set умеет добавлять комментарии: --comment="Отключено для продакшена".
Использование фильтров для админ-специфичных настроек
Код MU-плагина (файл wp-content/mu-plugins/admin-config.php):
<?php
// Увеличить лимит памяти для админки через фильтр (работает независимо от wp-config)
add_filter('admin_memory_limit', function($limit) {
return '512M';
});
// Изменить максимальный размер загружаемого файла в админке (через фильтры медиа)
add_filter('upload_size_limit', function($size) {
return 128 * 1024 * 1024; // 128 MB в байтах
});
// Отключить автообновления только для админки
add_action('admin_init', function() {
if ( ! current_user_can('manage_options') ) return;
// переопределить глобальные настройки
});
?>
После активации плагина (MU-плагины подключаются автоматически) лимит памяти в админке увеличится. Проверить можно, добавив в файл временный error_log('Memory limit: ' . WP_MEMORY_LIMIT); и посмотрев лог.
Подключение внешнего конфигурационного файла из wp-config.php
Иногда удобно вынести чувствительные данные в отдельный файл, не включаемый в репозиторий. В wp-config.php добавьте:
if (file_exists(dirname(__FILE__) . '/local-config.php')) {
require_once(dirname(__FILE__) . '/local-config.php');
} else {
// Продакшен-настройки по умолчанию
define('DB_NAME', 'production_db');
// ...
}
Файл local-config.php содержит те же константы, но для локальной среды. Это позволяет легко переключать конфигурации. Результат: каждый разработчик может иметь свои настройки БД без изменения основного wp-config.php.