2013-08-16 180 views
10

我想設置一個環境變量,然後在PHP中訪問它,但無法找到如何操作。將環境變量傳遞給php命令行腳本

在(Linux)的殼,我運行:

$ APP_ENV="development" 
$ export $APP_ENV 

然後我運行一個簡單的測試腳本testenv.php:

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

,從同樣的殼,其中該變量被設置:

$ php testenv.php 

This Prints nothing and throw a notice:

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包含「$」僅僅是爲了強調這些行是shell命令。 – ciruvan

+3

@cuewizchris我不是在'export'之前談論'$',我正在談論那個_after_。 – Barmar

+0

@cuewizchris實際上沒有Barmar是正確的出口$ APP_ENV不應該在前面有$ –

7

問題1導出ing環境變量

您的輸出是錯誤的。

$ 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」。

相關問題