コマンドラインから PHP スクリプトを実行する必要があり、いくつかの環境変数を設定する必要があります。残念ながら、以下は機能しません。
php -dAPPLICATION_ENV=staging script.php
私が達成したいのは、APPLICATION_ENV
変数を設定することです。
コマンドラインから PHP スクリプトを実行する必要があり、いくつかの環境変数を設定する必要があります。残念ながら、以下は機能しません。
php -dAPPLICATION_ENV=staging script.php
私が達成したいのは、APPLICATION_ENV
変数を設定することです。
APPLICATION_ENV=staging php script.php
変数は $_SERVER 配列で使用できます。
echo $_SERVER['APPLICATION_ENV'];
オプションを PHP バイナリに渡すことによって、特にスクリプトの実行用にコマンド ラインから環境変数を設定する方法はありません。
いくつかのオプションがあります:
最後の 2 つのオプションは、作成された変数がスクリプトの実行時にのみ存在するという点で、おそらくこれを行うための最もクリーンな方法です。
オプション 1 の実装はシステムに依存します。
オプション 2 の実装もシステムに依存します。Windows では実行しset APPLICATION_ENV=staging&& php script.php
、*nix では実行しますexport APPLICATION_ENV='staging' && php script.php
。
オプション 3 を選択する場合、シェル スクリプトを使用したくなるかもしれませんが、これは移植性がありません (Windows 用のバッチ ファイルと *nix 環境用のシェル スクリプトが必要です。代わりに、次のように記述することをお勧めします)。次のような単純な PHP ラッパー スクリプト:
<?php
putenv('APPLICATION_ENV=staging');
include('script.php');
これにより、ターゲット スクリプトを変更せずに、スクリプトのセッションのみに環境変数を設定できます。
コマンドラインで変数を指定したり、これらの変数が設定されたときに実行するスクリプトを動的に指定したりできる、より複雑なラッパー スクリプトを簡単に作成できます。
$argv
オプション 4 は、変数を使用して実装できます。
<?php
$applicationEnv = $argv[1];
// rest of you script
...そして次のようにスクリプトを呼び出します:
php script.php staging
ただし、どの環境が実行されているか (ステージング、開発、ライブなど) をスクリプトに示しているように思われます。その場合、サーバー全体の変数を設定し、必要に応じて名前を変更するのが最も簡単かもしれません。他のアプリケーションが設定している可能性のある変数との衝突を防ぎます。そうすれば、スクリプトを簡単に呼び出すことができ、これについて心配する必要はありません。これは、ステージング環境がライブとは別のマシンで実行されていることを前提としています (そうあるべきです)。
CLI と Web リクエストの両方で getenv() を使用してアクセスできる/etc/environment
ように変数を設定できます。FOO="bar"
この変更を有効にするには、再ログインが必要になる場合があります。
putenv を使用してみて、パラメーターを介して変数を渡します
php script.php APPLICATION_ENV=staging
そしてscript.phpコードでは:
for($i=1;$i<count($argv);$i++){
putenv($argv[$i]);
}
私は同じ状況にあり、次のコードを使用します(私にとってはうまくいきます):
export APPLICATION_ENV=staging && php script.php
あなたにも役立つことを願っています。