2011-01-20 23 views
4

PHPを使用してコマンドラインからbash環境変数を設定しようとしていますが、成功しません。外部のbashから環境変数を設定する

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

しかし、まだ何も:

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

私も出力にevaledますキーの値をスクリプトを使用してみました。

アイデア?私はPHPシステム関数から呼び出されてその仕事をすることができる限り、他のツール(perl、python、cなど)を使用しても構いません。

+0

は、あなたが任意のアクセス権限エラーを取得してください:として

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

打ち上げそれ?あなたのerror.logを確認してください。 – powtac

+0

申し訳ありませんが、それは言及していませんが、これはコマンドラインからです。 – zaf

答えて

4

別のbashスクリプトを実行する前に、この環境変数が必要ですか?

あなただけputenv("KEY=VAL");

エスを使用することができます。

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

編集:

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

同じPHPスクリプトから他のスクリプトを実行していると動作するようです。でも僕はそうじゃない。 PHPスクリプトの終了後に変数が存在する必要があります。 – zaf

+0

このスクリプトは '$ php script.php &&。/ other_command.sh'のように使います。私は正しい? –

+0

ローテク:php script.php && echo $ VARTESTKEY – zaf

関連する問題