Verwenden von Umgebungsvariablen in WordPress wp-config

Lesezeit: 4 Minuten

Benutzeravatar von Robert C. Edwards
Robert C. Edwards

Ich verwende phpfog.com für das Hosting und github.com für die Problemverfolgung usw. Ich habe zwei Remotes eingerichtet, eine für phpfog.com und die andere für github.

Im Backend-Admin von phpfog können Sie Umgebungsvariablen definieren. Ich habe dies dort getan und möchte sie in meiner wp-config-Datei verwenden.

Hier ist der Code, den ich verwendet habe:

/** Hardened Salts for use on github.com, phpfog.com, etc.*/
$AUTH_KEY = getenv('AUTH_KEY');
$SECURE_AUTH_KEY = getenv('SECURE_AUTH_KEY');
$LOGGED_IN_KEY = getenv('LOGGED_IN_KEY');
$NONCE_KEY = getenv('NONCE_KEY');
$AUTH_SALT = getenv('AUTH_SALT');
$SECURE_AUTH_SALT = getenv('SECURE_AUTH_SALT');
$LOGGED_IN_SALT = getenv('LOGGED_IN_SALT');
$NONCE_SALT = getenv('NONCE_SALT');
define('AUTH_KEY', $AUTH_KEY);
define('SECURE_AUTH_KEY', $SECURE_AUTH_KEY);
define('LOGGED_IN_KEY', $LOGGED_IN_KEY);
define('NONCE_KEY', $NONCE_KEY);
define('AUTH_SALT', $AUTH_SALT);
define('SECURE_AUTH_SALT', $SECURE_AUTH_SALT);
define('LOGGED_IN_SALT', $LOGGED_IN_SALT);
define('NONCE_SALT', $NONCE_SALT);

Das muss doch sauberer gehen…

  • Nein, sorry, habe nur vergessen, die Antwort zu akzeptieren … danke!

    – Robert C. Edwards

    16. Februar 2012 um 2:45 Uhr

  • Ich habe nach Problemen gefragt Vor Ich habe meine Antwort gegeben 😉

    – zerkms

    16. Februar 2012 um 2:51 Uhr

Benutzeravatar von zerkms
zerkms

Sie könnten es halb so lange machen, indem Sie das Funktionsergebnis als konstanten Wert ohne Zwischenvariable übergeben:

define('AUTH_KEY', getenv('AUTH_KEY'));

Oder machen Sie das in einer Schleife:

$vars = array('AUTH_KEY', 'SECURE_AUTH_KEY', ...);
foreach ($vars as $var) {
    define($var, getenv($var));
}

  • ah, schön … das ist die Syntax, die ich vermisst habe

    – Robert C. Edwards

    15. Februar 2012 um 21:52 Uhr

  • Sie verlieren die IDE-Unterstützung, wenn Sie Konstanten in einer Schleife definieren

    – Okneloper

    22. März 2017 um 17:49 Uhr

Benutzeravatar von Oscar Alencar
Oscar Alencar

Ich ziehe es vor, diesen Ansatz unten zu verwenden:

<?php

//GET HOSTNAME INFO
$hostname = $_SERVER['SERVER_NAME']; 

//VERIFY WHICH ENVIRONMENT THE APP IS RUNNING
switch ($hostname) {
    case 'development.dev':
        define('WP_ENV', 'development');
        define('WP_DEBUG', true);
        break;
    case 'staging.mywebsite.com':
        define('WP_ENV', 'staging');
        define('WP_DEBUG', true);
        break;
    case 'www.mywebsite.com':
        define('WP_ENV', 'production');
        define('WP_DEBUG', false);
        break;
    default:
        define('WP_ENV', 'production');
        define('WP_DEBUG', false);
}

?>

  • Ich mag das und würde vorschlagen, die Suchumgebung in eine eigene Datei zu trennen und dann include sie hier, besonders wenn Sie das Git- und Code-Review-System verwenden. Sorgt für Ordnung.

    – Sgnl

    9. Dezember 2021 um 0:18 Uhr

Ab WordPress 5.5.0

WordPress hat eine neue Funktion für die Umgebungsvariablen mit 3 verschiedenen möglichen Werten hinzugefügt.

Sie können verwenden wp_get_environment_type() Funktion, um die aktuelle Umgebung abzurufen.

Anwendungsbeispiel:

If(wp_get_environment_type() === 'development') {
 // do something
} else {
 // do something
}

Standardmäßig, wenn WP_ENVIRONMENT_TYPE ist leer oder ungültig (alles außer development, staging & production), production ist zurück gekommen.

Sie können definieren development oder staging Umwelt durch die wp-config.php Datei.

define( 'WP_ENVIRONMENT_TYPE', 'development' );

Der beste Weg, Umgebungsvariablen zur Steuerung Ihrer WP-Umgebung zu verwenden, ist die Verwendung von DotEnv ( https://github.com/vlucas/phpdotenv )

Dieser Ansatz wird in einem Blogbeitrag dargelegt: https://m.dotdev.co/secure-your-wordpress-config-with-dotenv-d939fcb06e24

Der grundlegende Ansatz besteht darin, eine .env-Datei im Stammverzeichnis Ihrer Website mit den Umgebungsvariablen zu erstellen.

Allerdings gibt es ein paar Probleme mit dem Blogbeitrag, da DotEnv Version 5 standardmäßig keine Umgebungsvariablen mehr verwendet.

Verwenden Sie also anstelle des im Blog-Beitrag verwendeten Codes diesen oben in Ihrer wp-config.php-Datei …

$app_env = getenv("APP_ENV");
$file = $app_env == null ? ".env" : ".env.".$app_env;
if(file_exists(__DIR__."https://stackoverflow.com/".$file))
{
    require_once(__DIR__ . '/vendor/autoload.php');
    (Dotenv\Dotenv::createUnsafeImmutable(__DIR__,$file))->load();
    error_log("Environment loaded from ".$file);
} else {
    error_log("*WARNING* environment file not found: ".$file);
}

Die .env-Datei sieht so aus …

# MySQL settings

DB_NAME=wpbench
DB_USER=wpuser
DB_PASSWORD=password
DB_HOST=localhost
DB_CHARSET=utf8
DB_COLLATE=

Die Definition der Konstanten in der wp-config.php-Datei sieht so aus …

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

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

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

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

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

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

Verwenden Sie die Variable APP_ENV, um zwischen Variablensätzen zu wechseln. Erstellen Sie beispielsweise .env.production- und .env.staging-Dateien. Wenn die .env-Datei nicht vorhanden ist, werden die Werte aus der Umgebung gezogen, was für die Cloud-Bereitstellung gut funktioniert.

1402690cookie-checkVerwenden von Umgebungsvariablen in WordPress wp-config

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy