Phing exec命令设置环境变量

时间:2011-04-27 13:23:30

标签: command-line environment-variables exec phing

我正在尝试使用phing在构建脚本中设置环境变量。 这通常是这样完成的命令行:

export MY_VAR=value

在Phing中我做了以下但是没有用。

<exec command="export MY_VAR=value" />

3 个答案:

答案 0 :(得分:9)

我看到这是一个很老的问题,但我认为它没有以最好的方式得到回答。如果你想导出一个shell变量,比如说你从phing运行phpunit并想在调用phpunit之前进行导出,试试:

<exec command="export MY_VAR=value ; /path/to/phpunit" />

只需执行导出并在同一个exec标记内调用您的命令。如图所示,使用分号分隔export语句和shell可执行文件。您的脚本将能够使用标准的php函数访问该值:

$myVar = getenv('MY_VAR');

答案 1 :(得分:6)

粗体声明: 无法在PHP中设置/导出(Unix)shell变量,以便在启动php脚本的范围内可见。

php myfile.php (does putenv or shell_exec('export foo=bar');)
echo $foo

什么都不会回报。 由于PHP无法做到这一点所以也无法发表。

在多个脚本运行中访问shell环境变量(如果它是你想要的那样)似乎也是一个不理想的设计决策,非常有状态。

除此之外,我敦促你坚持学习并学习精益课程。 Phing在某种程度上帮助无国籍思考。

答案 2 :(得分:4)

我之前从未听说过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>

我希望这会有所帮助。