将变量从PHP导出到shell

时间:2010-01-04 23:10:41

标签: php shell export environment-variables

我正在尝试设置一个应该可以从PHP外部访问的变量。理想情况下,这应该是一个局部变量,但环境变量也是受欢迎的。

首先,我尝试了putenv(),但这没有结果:

  

$ php -r“putenv('PHP_TEST = string');” ; echo $ PHP_TEST

     

$

当我从同一个脚本调用getenv()时,会产生正确的“字符串”值。 安全模式已关闭,但手册中说“PHP_”前缀对于safe = on至关重要,所以我使用它以防万一:)

然后我尝试system()shell_exec()

  

$ php -r“shell_exec('PHP_TEST = string');” ; echo $ PHP_TEST

     

$ php -r“shell_exec('export PHP_TEST = string');” ; echo $ PHP_TEST

     

$

有解决方法吗?可能是什么原因? 我正在使用Ubuntu Linux 9.10“Karmic”,但FreeBSD服务器也给出了相同的结果。

2 个答案:

答案 0 :(得分:3)

如果你试图将一些输出传递给shell变量,你可以这样做:

$ testvar=$(php -r 'print "hello"')
$ echo $testvar
hello

显示导出如何影响事物:

$ php -r '$a=getenv("testvar"); print $a;'
$ export testvar
$ php -r '$a=getenv("testvar"); print $a;'
hello

在这些示例中,交互式shell是父进程,显示的所有其他内容都是子进程(以及彼此的兄弟)。

答案 1 :(得分:2)

导出的环境变量仅在子进程中可用。

因此,您将能够设置环境变量,然后生成子进程。环境变量将在该子进程中可见。但是,在php中设置然后启动后续进程(echo,在上面的示例中)将无效。

如果设置变量然后生成/执行一个新进程,它应该在该新进程中可见。