PHPアプリケーションの準備
何が準備を展開することも意味します.
これは、アプリケーションコードを変更せずに任意の環境でアプリケーションを展開できることを意味します.
あなたのアプリケーションが準備ができていることを確認するために、展開(ステージング、アルファまたは生産)の間で変わることができるものはあなたのアプリでハードコード化されてはいけません.
データベース接続をしようとしている間、あなたが遭遇したか、下のもののようなコードさえ書かれたということを知っています.
ハードコーディングとデータベースログイン資格情報を公開します. 他の環境にアプリケーションを配備するとき、接続が失敗しないように接続コードを編集しなければなりません(環境が正確に設定されていない限り)
上記のコードを改善するには、ハードコーディングなしで資格情報を提供する方法が必要です.これは環境変数を使用して実現可能です.
environment variableは、実行中のプロセスがコンピュータ上で動作する方法に影響を与える動的な名前付きの値です.あなたのケースでは、ダイナミックな値は
環境変数の設定
サーバーを所有している場合は、以下のように環境変数を設定できます.
Windows Serverで
ターミナルをオープンします( CTRLALTTを押して) sudo - h gedit/etc/環境 タイプあなたのパスワード ちょうど開いたテキストファイルを編集します.
を保存し、ログアウトし、変更を有効にするためにログインします. 環境変数を設定すると、ハードコーディングではなく変数を使用するようにコードを変更できます.
環境変数を設定するには、次のファイルに追加します
これは、アプリケーションコードを変更せずに任意の環境でアプリケーションを展開できることを意味します.
あなたのアプリケーションが準備ができていることを確認するために、展開(ステージング、アルファまたは生産)の間で変わることができるものはあなたのアプリでハードコード化されてはいけません.
データベース接続をしようとしている間、あなたが遭遇したか、下のもののようなコードさえ書かれたということを知っています.
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サーバについて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';
あなたがコードに何かを変える必要がないので、あなたがデータベースへの接続をするために、その配備をした今、非常に簡単になります.また、データベースの資格情報を公開していません.Reference
この問題について(PHPアプリケーションの準備), 我々は、より多くの情報をここで見つけました https://dev.to/sadick/building-deploy-ready-php-apps-1kfmテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol