2013-08-16 24 views
10

環境変数を設定してからPHPでアクセスしたいが、その方法はわからない。 (Linux)のシェルでphpコマンドラインスクリプトに環境変数を渡す

、私が実行:その変数が設定されたのと同じシェルから

<?php 
print $_ENV["APP_ENV"]; 
print getenv("APP_ENV"); 

$ APP_ENV="development" 
$ export $APP_ENV 

そしてIは、単純なテストスクリプトtestenv.phpを実行

$ php testenv.php 

これは何も印刷せずに通知をスローします。

Notice: Undefined index: APP_ENV in /xxxx/envtest.php on line 2 

環境変数でAPP_ENVが検出されないため、getenv()は警告をスローしませんが、単に何も返しません。

私には何が欠けていますか?

答えて

15

exportコマンドで$を使用しないでください、それは次のようになります。

export APP_ENV 

あなたは割り当てでこれを組み合わせることができます。$

export APP_ENV="development" 

、あなたは効果的に行っていた。

export development 
+0

私はOPに「$」が含まれていると思うのは、これらの行がシェルコマンドであることを強調するためです。 – ciruvan

+3

@cuewizchris私は '輸出'の前に '$'について話しているわけではありません。 – Barmar

+0

@cuewizchris実際にはバーマーは正当な輸出です$ APP_ENVは$を前に入れてはいけません –

7

問題1エクスポート環境変数

エクスポートが正しくありません。 $は、輸出のステートメントから欠落していることを

$ APP_ENV="development" 
$ export APP_ENV 

お知らせ! :Pエクスポートが動作することを確認する

まずチェックのgetenvを:

<?php 
    echo getenv ("APP_ENV"); 
?> 

問題2:この上の未定義のインデックス:

<?php 
    echo $_ENV["APP_ENV"]; 
?> 

あなたがgetenvではなく、スーパーグローバルから適切な値を取得する場合$_ENVあなたのiniファイルをチェックする必要があるかもしれません。

php.org引用:あなたの$ _ENV配列は不思議な空の場合

を、しかしのgetenvを呼び出すときにあなたはまだ( 変数を参照)、またはあなたのphpinfoで()、あなたの http://us.php.net/manual/en/ini.core.php#ini.variables-order INI 設定を確認してください文字列に "E"が含まれていることを確認します。

関連する問題