我試圖用phing在構建腳本中設置環境變量。 這通常進行的命令行是這樣的:Phing exec命令設置環境變量
export MY_VAR=value
在Phing我做了以下內容,但它不工作。
<exec command="export MY_VAR=value" />
我試圖用phing在構建腳本中設置環境變量。 這通常進行的命令行是這樣的:Phing exec命令設置環境變量
export MY_VAR=value
在Phing我做了以下內容,但它不工作。
<exec command="export MY_VAR=value" />
粗體索賠:無法在PHP中設置/導出(Unix)shell變量,以便在啓動php腳本的範圍內可見。
php myfile.php (does putenv or shell_exec('export foo=bar');)
echo $foo
什麼都不會返回。由於PHP不能這樣做,因此都不可以。
在多個腳本運行期間訪問shell環境變量(如果它是你想要的)似乎也是一個非理想的設計決策,非常有狀態。
除此之外,我會敦促你堅持使用phing並學習它的精益課程。 Phing在一定程度上幫助了無國籍的思維。
我以前從來沒有聽說過phing,但這看起來非常有希望作爲構建工具。感謝發佈!我查看了phing.info上的文檔,發現有以下可能性:
#0我想澄清一點。你是說
prompt$ > export MY_VAR=value
prompt$ > phing build.xml
不會將MY_VAR設置爲值,因此它在運行的phing進程中可見嗎?我會很驚訝,但我會理解,如果這不是你想要運行你的構建腳本。
#1我認爲在構建工具的上下文中,像exec這樣的功能是爲了運行獨立程序,因此,儘管exec可以運行並設置MY_VAR,但這一切都發生在消失的子進程中當exec完成並且繼續處理build.xml中的下一個任務時立即執行。
如果你只是想確保你的phing腳本與env_vars特定值運行,你可以嘗試
Command-line arguments:
....
-D<property>=<value>
// Set the property to the specified value to be used in the buildfile
那麼想必,你可以做
phing -DMY_VAR=value build.xml
#2你做考慮使用合適的文件? 見http://www.phing.info/docs/guide/stable/chapters/appendixes/AppendixF-FileFormats.html 和向下滾動的build.properties
#3也是信息...
Phing Built-In Properties
Property Contents
env.* Environment variables, extracted from $_SERVER.
你會的東西訪問他們像
${env.MY_VAR}
#4這看起來更接近你真的想要什麼
<replacetokens> <token key="BC_PATH" value="${top.builddir}/"/> <token key="BC_PATH_USER" value="${top.builddir}/testsite/user/${lang}/"/> </replacetokens>
我希望這有助於。
我看到這是一個相當古老的問題,但我認爲它沒有以最好的方式得到解答。如果你想導出shell變量,例如說你是從phing運行PHPUnit和想要做的調用PHPUnit的前一個出口,嘗試:
<exec command="export MY_VAR=value ; /path/to/phpunit" />
簡單,做出口,並調用相同的exec標記中的命令。如圖所示,用分號分隔導出語句和shell可執行文件。您的腳本將能夠使用標準的php功能訪問該值:
$myVar = getenv('MY_VAR');
這正是我的使用案例和完全正確的答案。你是個學者和紳士。 – Frug 2014-07-28 18:32:29
'export'不是便攜式的,但適用於單一平臺 – ScayTrase 2016-09-23 05:55:01