WEB技術日記

perlとPHPでの環境変数を伴うexecの違い

今日、半日くらい悩んだ出来事です。

とある仕様書を見てPHPでexecを利用して外部コマンドを実行するのですが、仕様書どおりなのになぜかうまくいかない。

環境変数が必要とあったので、$_SERVER['REQUEST_METHOD']や$_SERVER[QUERY_STRING']などにきちんと値が入っているか確認した上で試してみてもうまくいかない。

数時間後、しようがないのでperlに書き直して試した・・・なぜかうまくいく。

どうもperlでは、環境変数が渡されているがPHPだと渡されてないようだ。

そこでやっとこさ辿りついたのが、putenv。

putenv(‘REQUEST_METHOD=’.$_SERVER['REQUEST_METHOD']);
putenv(‘QUERY_STRING=’.$_SERVER['QUERY_STRING']);
した後、execするとやっとこさPHPでもうまくいきました。

ふぅ。

 

 

WEB技術日記

 
 
page top