prosource

Wordpress wp-config 환경 변수 사용

probook 2023. 2. 16. 21:50
반응형

Wordpress wp-config 환경 변수 사용

호스팅에는 phpfog.com, 문제 추적에는 github.com 등을 사용하고 있습니다.2개의 리모트 설정이 있습니다.하나는 phpfog.com 로, 이제1개는 github 로 설정되어 있습니다.

phpfog의 백엔드 관리자에서 환경 변수를 정의할 수 있습니다.거기서 사용했는데, 제 wp-config 파일에서 사용하고 싶습니다.

사용한 코드는 다음과 같습니다.

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

좀 더 깔끔한 방법이 있을 텐데...

중간 변수 없이 상수 값으로 함수 결과를 전달하면 이 길이를 절반으로 만들 수 있습니다.

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

또는 루프에서 실행합니다.

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

WordPress 5.5.0부터

WordPress는 환경변수에 가능한 3가지 값을 가진 새로운 함수를 추가했습니다.

사용할 수 있습니다.wp_get_environment_type()현재의 환경을 취득하는 기능.

사용 예:

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

디폴트로는WP_ENVIRONMENT_TYPE비어 있거나 무효입니다(제외의 임의의 것).development,staging&production),production이 반환됩니다.

정의할 수 있습니다.development또는staging를 통한 환경wp-config.php파일.

define( 'WP_ENVIRONMENT_TYPE', 'development' );

이하의 어프로치를 사용하는 것을 추천합니다.

<?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);
}

?>

환경변수를 사용하여 WP 환경을 제어하는 가장 좋은 방법은 DotEnv(https://github.com/vlucas/phpdotenv)를 사용하는 것입니다.

이 어프로치는 블로그 투고에 기재되어 있습니다.https://m.dotdev.co/secure-your-wordpress-config-with-dotenv-d939fcb06e24

기본적인 접근법은 환경변수를 사용하여 사이트의 루트에 .env 파일을 작성하는 것입니다.

그러나 DotEnv 버전5는 디폴트로 환경변수를 사용하지 않기 때문에 블로그 투고에는 몇 가지 문제가 있습니다.

따라서 블로그 투고에 사용되는 코드 대신 wp-config.php 파일 상단에 있는 코드를 사용하십시오.

$app_env = getenv("APP_ENV");
$file = $app_env == null ? ".env" : ".env.".$app_env;
if(file_exists(__DIR__.'/'.$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);
}

.env 파일은 다음과 같습니다.

# MySQL settings

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

wp-config.php 파일에 상수를 정의하는 방법은 다음과 같습니다.

/** 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'));

변수 세트 간에 전환하려면 APP_ENV 변수를 사용합니다.예를 들어 .env.production 및 .env.stageing 파일을 생성합니다..env 파일이 없는 경우 클라우드 배포에 적합한 환경에서 값을 가져옵니다.

언급URL : https://stackoverflow.com/questions/9300950/using-environment-variables-in-wordpress-wp-config

반응형