我有一个编译的C程序,它是一个cgi,如果我直接从php网页上调用它并且有适当的GET或POST请求,它可以正常工作。 我正在尝试让一个php程序调用cgi,捕获数据并修改它,然后再回复给用户。
我试过了:
<?php
foreach($_REQUEST as $i => $j)
apache_setenv($i,$j);
$out = shell_exec("cgi-bin/Mycgi.cgi");
// will modify out here
echo $out;
?>
但Mycgi.cgi从未看到环境变量。我完全误解了它应该如何工作? 我哪里错了?
答案 0 :(得分:0)
在脚本中调用shell_exec
之前,必须使用putenv
显式设置环境变量。
putenv("VARIABLE=value");
答案 1 :(得分:0)
我的解决方案非常有效,它是: 在php中使用以下信息构建字符串(QUERY_STRING只是示例)
$qs =
'env REQUEST_METHOD=GET QUERY_STRING="Birthday=15&BirthMonth=3&BirthYear=1988" ../../cgi-bin/mycgi.cgi';
$output = '';
exec($qs,$output);
这就是全部。