(A) php.ini里的variables_order="EGPCS"
getenv(), apache_getenv()
(B) 增加系统的环境变量? 如果只是增加PHP范围内是可以的.系统的不可能.
(C) 
$command = 'export xxx=yyy;my command';
$lastline = system($command,$return);

解决方案 »

  1.   


    谢谢回复啊,对于(B), 就是只增加php范围内的就可以了(不知道对于用exec执行外部命令管用不),因为命令需要在php中运行,请问具体实现方法呢?
    对于(A),我之前查过了,已经是EGPCS了,但是exec里面貌似获取不了那些环境变量,似乎只能获取$_ENV里面的
      

  2.   

    <?php
    echo exec("export LLL=hi;echo \$LLL"); //输出hi
    echo exec("echo \$LLL"); //没有输出
    ?>
    (A)的少一堆是因为执行PHP的用户和你在Shell的用户不同造成的.
      

  3.   


    PHP code<?php
    echo exec("export LLL=hi;echo \$LLL"); //输出hi
    echo exec("echo \$LLL"); //没有输出
    ?>
    这样是不行的,我试过的,因为好像每一个exec是一个独立的shell,所以你前一个设置环境变量成功了,但是第二次调用exec的时候又重新打开一个shell,环境变量还是取不到的.(A)的少一堆是因为执行PHP的用户…
    执行PHP的用户和我在shell执行成功的用户是一样的,已经通过修改apache配置文件改过了,但是环境变量还是无法从exec中完整的读取到我再试试,不行就只有用(C)的方法了....
      

  4.   

    有新的发现,我发现在apache2的配置文件中添加,setenv xxx yyy
    就可以在apache2的php的$_server中找到xxx
    谢谢大家的解答,结贴