【问题标题】:Set environment variable from outside bash从外部 bash 设置环境变量
【发布时间】:2011-01-20 12:58:12
【问题描述】:

我正在尝试使用 PHP(从命令行)设置 bash 环境变量,但没有成功。

$buff=array();
$buff[]="VARTESTKEY=VARTESTVALUE";
$buff[]="export VARTESTKEY";
file_put_contents('script.sh', implode("\n",$buff));
system('source script.sh');

我什至尝试使用脚本来输出被评估的键值:

$buff=array();
$buff[]="echo VARTESTKEY=VARTESTVALUE";
file_put_contents('script.sh', implode("\n",$buff));
system('eval "$(bash script.sh)"');

但还是一无所获。

有什么想法吗?我不介意使用任何其他工具(perl、python、c 等),只要它可以通过从 PHP 系统函数调用来完成它的工作。

【问题讨论】:

  • 您是否收到任何访问权限错误?检查您的错误日志。
  • 对不起,没有提到,但这是来自命令行。

标签: php bash environment-variables


【解决方案1】:

在运行另一个 bash 脚本之前是否需要此环境变量?

你可以使用putenv("KEY=VAL");

Es:

<?php
putenv("ASD=LOL");
system("echo \$ASD");
?>

编辑:

<?php 
echo "VARTESTKEY=VARTESTVALUE";
?>

启动它:

$ eval `php script.php` && echo $VARTESTKEY

【讨论】:

  • 如果我从同一个 PHP 脚本运行其他脚本,这看起来会起作用。但我不是。 PHP脚本结束后我需要该变量存在。
  • 所以你会以这样的方式使用这个脚本:$ php script.php &amp;&amp; ./other_command.sh。我说的对吗?
  • 技术含量更低:php script.php && echo $VARTESTKEY
  • 我想出了一个你的答案的变体,但这是一般的想法!
猜你喜欢
  • 2016-10-07
  • 2017-10-10
  • 2011-03-05
  • 1970-01-01
  • 2016-03-14
  • 2014-12-17
  • 2020-05-09
  • 2021-12-09
  • 2014-02-24
相关资源
最近更新 更多