コマンドラインからPHPスクリプトを実行する必要があり、いくつかの環境変数を設定する必要があります。残念ながら、次は動作しません:コマンドラインスクリプトの実行中にPHP環境変数を設定する
php -dAPPLICATION_ENV=staging script.php
APPLICATION_ENV
変数セットを持っている私は何を達成したいと思います。
コマンドラインからPHPスクリプトを実行する必要があり、いくつかの環境変数を設定する必要があります。残念ながら、次は動作しません:コマンドラインスクリプトの実行中にPHP環境変数を設定する
php -dAPPLICATION_ENV=staging script.php
APPLICATION_ENV
変数セットを持っている私は何を達成したいと思います。
APPLICATION_ENV=staging php script.php
変数に$ _SERVER配列に利用できるようになります:あなたは、コマンドラインからPHPスクリプトを実行すると
echo $_SERVER['APPLICATION_ENV'];
:それはあなたがそうのようにexportコマンドを使用して環境変数を設定できることを意味します。
あなたはいくつかのオプションがあります:システム上でグローバル変数を設定し
作成する変数は、スクリプトの実行時にのみ存在するという点で、おそらく最も簡単な方法です。
オプション1の実装はシステムによって異なります。
オプション2の実装もシステムに依存します.Windowsではset APPLICATION_ENV=staging&& php script.php
となり、* nixではexport APPLICATION_ENV='staging' && php script.php
となります。
オプション3に行く場合は、シェルスクリプトに行こうと思うかもしれませんが、移植性がありません(Windowsの場合はバッチファイル、* nix環境の場合はシェルスクリプトが必要です)
<?php
putenv('APPLICATION_ENV=staging');
include('script.php');
これは、あなたがそのままあなたのターゲットスクリプトを残し、スクリプトのみのセッションのための環境変数を設定することができます
より複雑なラッパースクリプト:Dあなたは、このような何かを、単純なPHPラッパースクリプトを書く示唆しますコマンドラインで変数を指定したり、スクリプトを動的に指定したりすることもできますこれらの変数が設定されているときに実行されるはずのt。
オプション4は変数を使用して実装することができます。
<?php
$applicationEnv = $argv[1];
// rest of you script
...しかし、あなたが環境(ステージング、DEV、ライブなど)で実行されているスクリプトに示しているように見えることを私に発生し
php script.php staging
- その場合、それを中:などのスクリプトを呼び出しますサーバ全体の変数を設定し、他のアプリケーションが設定しているかもしれない変数との衝突を防ぐために必要に応じて名前を変更するのが最も簡単かもしれません。そうすれば、スクリプトを呼び出すだけで、これを心配する必要はありません。これは、あなたがステージング環境が別のマシン上で実行されていることを前提としています。
のputenvを使って試してみて、パラメータ
php script.php APPLICATION_ENV=staging
そしてscript.phpコードで
て変数を渡す:あなたはFOO="bar"
よう
/etc/environment
で変数を設定することができ
for($i=1;$i<count($argv);$i++){
putenv($argv[$i]);
}
のgetenvとその後、アクセス可能ですCLIとWeb要求の両方で()を使用します。この変更を有効にするには、再ログオンする必要があります。
+1「この変更を有効にするには[in]を再配置する必要があるかもしれません。私はこのコメントを見るまで、なぜ私の '/ etc/environment'の内容がうまくいかないのか疑問に思って壁に頭を打ちました。 –
私は同じような状況を持っていると私は、次のコード(それは私のために動作します)を使用します。
export APPLICATION_ENV=staging && php script.php
は、それはあまりにもあなたのために役立つことを願っています。ここで
は1つのenvirnnomental変数を設定するための例です:
ENV_VAR='var' php script.php
あなたは複数の変数を設定したいだけの場合には これを試してみてください:
ENV_VAR1=1 ENV_VAR2=2 ENV_VAR3=3 php script.php
は-dとAPPLICATION_ENVタイプミスとの間のスペースであります? putenv( "APPLICATION_ENV = staging")を入れてみてください。 in script.php – Tdelang
スクリプト内からいくつかの変数を設定するか、スクリプト内から環境変数にアクセスする必要がありますか?後者の場合は、アクセスするためにどのコードを使用していましたか? – DaveRandom
スクリプト変数は 'getenv()'関数で取り出されます。 – Wiktor