[PHP-users 27589] 環境変数を外部コマンドに渡したい

toda513@excite.co.jp toda513 @ excite.co.jp
2005年 11月 23日 (水) 15:51:28 JST


はじめまして
とだと申します。

外部コマンドに環境変数を渡す処理が必要なプログラムを作成しているのですが、環境変数を渡すことができません。設定等で対応可能なものなのかご存じの方がいらっしゃいましたらアドバイスをお願いします。

<?
$cmd = "/usr/local/apache/cgi-bin/printenv";
$handle = popen($cmd, "r");
$auth_data = fread($handle, 2096);
pclose($handle);
print $auth_data;
?>

printenvのプログラムに環境変数QUERY_STRINGを取得させたいというものです。

以下のような処理を行ってもprintenvで環境変数を取得することはできませんでした。
apache_setenv("QUERY_STRING","aa=aaaaaaaaaaaaaaaaaaaaaaaaaa");
$_ENV['QUERY_STRING'] = "aa=aaaaaaaaaaaaaaaaaaaaaaaaaa";

以下のように環境変数を設定すれば、当然期待通りの動作はするのですがこのような手法が一般的なのか不明なため質問させていただきました。
$cmd = "export QUERY_STRING={$_SERVER['QUERY_STRING']};/usr/local/apache/cgi-bin/printenv";

printenv
#!/usr/bin/perl
foreach $var (sort(keys(%ENV))) {
    $val = $ENV{$var};
    $val =~ s|\n|\\n|g;
    $val =~ s|"|\\"|g;
    print "${var}=\"${val}\"\n";
}


環境:
OS:RedHatLinux ES3
apache:apache_1.3.33
php:php-4.3.11
phpはapacheのモジュールとして動かしております。
safe_mode = off

よろしくお願い申し上げます。


PHP-users メーリングリストの案内