PHPアプリケーションの準備


何が準備を展開することも意味します.
これは、アプリケーションコードを変更せずに任意の環境でアプリケーションを展開できることを意味します.
あなたのアプリケーションが準備ができていることを確認するために、展開(ステージング、アルファまたは生産)の間で変わることができるものはあなたのアプリでハードコード化されてはいけません.
データベース接続をしようとしている間、あなたが遭遇したか、下のもののようなコードさえ書かれたということを知っています.
class Database
{
    public function connect($host, $user, $password)
    {
        $pdo = new PDO("mysql:host=$host;dbname=myDB", $user, $password);
        return $pdo;
    }
}

$db = new Database();
$db->connect("localhost", "root", "password");
上記のアプローチには二つの点があります.
  • ハードコーディングとデータベースログイン資格情報を公開します.
  • 他の環境にアプリケーションを配備するとき、接続が失敗しないように接続コードを編集しなければなりません(環境が正確に設定されていない限り)
    上記のコードを改善するには、ハードコーディングなしで資格情報を提供する方法が必要です.これは環境変数を使用して実現可能です.
    environment variableは、実行中のプロセスがコンピュータ上で動作する方法に影響を与える動的な名前付きの値です.あなたのケースでは、ダイナミックな値はdatabase username, address, passwordです
    環境変数の設定
    サーバーを所有している場合は、以下のように環境変数を設定できます.
    Windows Serverで
    setx DB_NAME test
    setx DB_HOST localhost
    setx DB_PASSWORD password
    
    
    Ubuntuサーバについて
  • ターミナルをオープンします( CTRLALTTを押して)
  • sudo - h gedit/etc/環境
  • タイプあなたのパスワード
  • ちょうど開いたテキストファイルを編集します.
  • DB_NAME=test
    DB_HOST=localhost
    DB_PASSWORD=password
    
  • を保存し、ログアウトし、変更を有効にするためにログインします.
  • 環境変数を設定すると、ハードコーディングではなく変数を使用するようにコードを変更できます.
    $env = getenv();
    
    $user = $env['DB_USER'];
    $password = $env['DB_PASSWORD'];
    $host = $env['HOST'];
    
    $db = new Database();
    $db->connect($host, $user, $password);
    
    Apacheと共有サーバーを使用する場合.ルートフォルダに.htaccessファイルが必要です.通常public_html.
    環境変数を設定するには、次のファイルに追加します
    SetEnv DB_USER your_production_db_user
    SetEnv DB_PASSWORD your_production_db_password
    SetEnv DB_NAME your_prodution_db_name
    
    これはサーバに変数を設定します.getenv()はシステム環境変数のみを取得しますので、これには欠点があります.これを解決するには、getenv()$_SERVERの両方を1つの配列に結合することができます.
    $env = array_merge(getenv(), $_SERVER);
    
    私はできるだけ多くの私の開発マシンの環境変数を設定するのを避けるために、私はちょうど私のマシン上で起こっているcoz.環境変数が見つからない場合には、私が通常していることはデフォルトです.
    $user = $env['DB_USER'] ?? 'root';
    $password = $env['DB_PASSWORD'] ?? 'password';
    $host = $env['HOST'] ?? 'locahost';
    
    あなたがコードに何かを変える必要がないので、あなたがデータベースへの接続をするために、その配備をした今、非常に簡単になります.また、データベースの資格情報を公開していません.