【问题标题】:read variables from wp-config.php从 wp-config.php 读取变量
【发布时间】:2011-11-27 01:41:22
【问题描述】:

我正忙于为一些 WP 站点编写基本的迁移脚本,我正在尝试通过读取 wp-config 文件来自动创建 mysql 数据库和用户凭据

如何从 wp-config 文件中读取以下变量,以便在 bash 脚本中有效地得到 3 个变量:

/** 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

【问题讨论】:

    标签: bash shell variables scripting


    【解决方案1】:

    试试这个:

    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`
    

    【讨论】:

    • 必须确保文件名正确,但这正是我需要做的,谢谢
    • 只是对 cat 的提示:没有必要将 cat 和 grep 结合起来。你可以grep DB_NAME wp-config-php
    【解决方案2】:

    如果你想使用 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`
    

    【讨论】:

      【解决方案3】:

      你可以使用 awk:

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

      这会给你:

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

      请注意,此解决方案适用于包含空格的变量。

      【讨论】:

      • 虽然效果很好,但它揭示了许多我不需要并且需要修改的额外数据,以免出现“
      • 可以加` | grep DB_` 到最后只是获取数据库信息。
      【解决方案4】:
      find . -name "wp-config.php" -print0 | xargs -0 -r grep -e "DB_NAME" -e "DB_USER" -e "DB_PASSWORD"
      

      【讨论】:

      • 这揭示了数据,但实际上并没有回答上面 Femi 的回答者所做的问题
      • 太好了,这就是我想要的。谢谢
      【解决方案5】:

      这里是一个通用的方式来传递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 中使用变量

      【讨论】:

        【解决方案6】:

        如果你想转储MySQL数据库,你也可以使用wp-cli db export函数:

        wp db export --path=PATHTOYOURWP
        

        【讨论】:

        • 如果你使用 wp-cli,我强烈推荐它,因为它可以让你编写许多任务的脚本,特别是如果你有几个 wordpress 网站。我推荐 wp-cli config get 命令:
          wp-cli config get DB_NAME | DB_USER | DB_PASSWORD | WP_HOME | WP_SITEURL
        猜你喜欢
        • 1970-01-01
        • 2011-12-16
        • 2020-12-22
        • 1970-01-01
        • 1970-01-01
        • 2012-06-21
        • 1970-01-01
        • 2014-11-29
        • 2015-04-19
        相关资源
        最近更新 更多