Phing exec命令设置环境变量
我试图用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