通过php使用单个命令行

时间:2015-03-24 20:08:13

标签: php batch-file

我正在尝试通过PHP界面运行我的计算机上的c ++可执行文件。我没有托管我的PHP的计算机上的管理员权限,因此无法为我的c ++添加适当的项目到我的PATH。

我可以在PHP中调用exec函数并通过批处理文件运行我的程序。在我的批处理文件中,我能够将路径变量设置为我需要的路径变量。

以下是我目前正在做的事情(runVideoparser是批处理文件):

exec("C:\\Users\\hewittjc\\Desktop\\runVideoParser", $output, $return);
echo "Program returned $return.";

在批处理中将固定参数传递给我的c ++时,上述工作正常。

但是,我的问题是我需要每次都能够传递程序不同的参数。如果我通过批处理文件运行它,那么我就失去了这种能力。

所以我的问题是,我怎么能:

1)通过PHP打开命令提示符(我正在运行Windows)

2)通过PHP

在提示中设置我的路径变量

3)然后,使用相同的提示来保存路径变量,运行我的程序,将所需的参数传递给它。

我想我可以在我的PHP中生成批处理然后运行它,但我正在寻找更优雅的解决方案。

1 个答案:

答案 0 :(得分:1)

理论上,你可以这样做:

$old_path = getenv("PATH");
$new_path = "/my/additional/path:$old_path";
putenv("PATH=$new_path");
system("command -with flags -and args -and such");

但是,this won't work如果主机启用了安全模式并且PATH不在safe_mode_allowed_env_vars指令中。