читать переменные из wp-config.php - PullRequest
9 голосов
/ 28 сентября 2011

Я занят написанием базовых сценариев миграции для некоторых сайтов WP и пытаюсь автоматизировать создание базы данных mysql и учетных данных пользователя из чтения файла wp-config

как я могу прочитать следующие переменные из файла wp-config, чтобы я в итоге получил 3 переменные в скрипте bash:

/** The name of the database for WordPress */
define('DB_NAME', 'somedbname');

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

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

Например, мой вывод должен дать мне:

WPDBNAME=somedbname
WPDBUSER=somedbuser
WPDBPASS=somerandompassword

Ответы [ 6 ]

23 голосов
/ 28 сентября 2011

Попробуйте это:

WPDBNAME=`cat wp-config.php | grep DB_NAME | cut -d \' -f 4`
WPDBUSER=`cat wp-config.php | grep DB_USER | cut -d \' -f 4`
WPDBPASS=`cat wp-config.php | grep DB_PASSWORD | cut -d \' -f 4`
3 голосов
/ 29 июля 2015

Если вы хотите использовать детали wp-config для подключения к mysql, вы можете использовать;

mysql -u `cat wp-config.php | grep DB_USER | cut -d \' -f 4` -p`cat wp-config.php | grep DB_PASSWORD | cut -d \' -f 4` -h `cat wp-config.php | grep DB_HOST | cut -d \' -f 4` `cat wp-config.php | grep DB_NAME | cut -d \' -f 4`
2 голосов
/ 28 сентября 2011

вы можете использовать awk:

awk -F"[()']" '/^define/{printf "%s=\"%s\"\n", $3, $5;}' < foo.php

Это даст вам:

DB_NAME="somedbname"
DB_USER="someusername"
DB_PASSWORD="somerandompassword"

Обратите внимание, что это решение будет работать с переменными, содержащими пробелы.

1 голос
/ 18 октября 2011
find . -name "wp-config.php" -print0 | xargs -0 -r grep -e "DB_NAME" -e "DB_USER" -e "DB_PASSWORD"
0 голосов
/ 18 октября 2017

Если вы пытаетесь сбросить базу данных MySQL, вы также можете использовать функцию wp-cli db export:

wp db export --path=PATHTOYOURWP
0 голосов
/ 29 августа 2017

Вот пример универсального способа передачи переменных php в bash без необходимости разбора:

#!/bin/bash

source <(php -r 'require("wp-config.php"); echo("DB_NAME=".DB_NAME."; DB_USER=".DB_USER."; DB_PASSWORD=".DB_PASSWORD); ')
mysqldump --user $DB_USER --password="$DB_PASSWORD" $DB_NAME | gzip > $DB_NAME-$(date +%Y%m%d%H%M%S).sql.gz

Объяснение алгоритма в нескольких словах:

  1. запусти свой php
  2. печатать переменные как var = value
  3. исходный вывод
  4. использовать переменные в bash
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...