代码之家  ›  专栏  ›  技术社区  ›  kolypto

将变量从php导出到shell

  •  5
  • kolypto  · 技术社区  · 15 年前

    我试图设置一个变量,该变量应该可以从外部php访问。理想情况下,这应该是一个局部变量,但也欢迎使用环境变量。

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

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

    $

    当我呼唤 getenv() 从同一个脚本–它产生正确的'string'值。 安全模式是关闭的,但是手册上说'php_u'前缀对于safe=on是至关重要的,所以我使用它只是以防万一:)

    然后我尝试 system() shell_exec() :

    $php-r“shell_exec('php_test=string');”回显$php_test

    $php-r“shell_exec('export php_test=string');”回显$php_test

    $

    有解决办法吗?可能是什么原因? 我正在使用UbuntuLinux9.10“karmic”,但是FreeBSDServer给出了相同的结果。

    2 回复  |  直到 15 年前
        1
  •  3
  •   Dennis Williamson    15 年前

    如果要将某些输出传递给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是父进程,其他显示的所有内容都是子进程(以及彼此的兄弟进程)。

        2
  •  2
  •   Brian Agnew    15 年前

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

    所以您可以设置一个环境变量,然后生成一个子进程。环境变量将在该子进程中可见。不管怎样 php 然后启动 连续的 过程( echo ,在上面的例子中)不起作用。

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