2011-03-22 62 views
1

故事是这样的:设置环境变量在PHP中进一步使用在Windows批处理命令

  • 运行JUnit测试活动之后,我 运行PHP脚本来获取变量 $ testsOK和$ testsFailed。

  • 在同一个php脚本中,我必须添加到环境变量“OK”和 “FAILED”之前在同一个脚本中获得 的数字。我 使用运行putenv,$ _ENV [ “确定”] = ...甚至 apache_setenv( “OK”,$ testsOK),其中 当然,因为我做 没有一个Web服务器不工作,我只用PHP CLI 。

  • 我将不得不使用这些环境变量“OK”,并在 Windows批处理命令“失败”的 脚本运行后。

在上php.net的运行putenv页面(http://php.net/manual/en/function.putenv.php)有人说: “运行putenv/GETENV,$ _ENV和的phpinfo( INFO_ENVIRONMENT)是三个完全不同的环境存储区,做putenv(“x = y”)不影响$ _ENV;但是做$ _ENV [“x”] =“y”同样不影响getenv(“x”)。不影响phpinfo()中返回的内容。“

因此,这些方法都不会帮助我。我的问题是:我应该放弃这种方法并尝试使用另一种语言吗? :-)或者有没有我失踪的方法。

我非常感谢您的帮助。 Anca

+0

您不能在另一个进程中设置环境变量并将它们保留在父shell中。这没有用。 – Joey 2011-03-22 21:15:47

回答

1

您可能会将调用包装在脚本中,PHP会通过stdout返回要设置的值;该脚本会将此输出捕获到适当的环境变量中。

一个非常简化的版本会是这样的。

@echo off 
runtestcampaign 
for /f %%a in ('php myscript.php') do (
    set OK=%%a 
    set Fail=%%b 
) 
restofbat 
相关问题