通过php使用单个命令行


Using a single command line through php

我正试图通过我的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中生成批处理,然后运行它,但我正在寻找更优雅的解决方案。

理论上,您可以这样做:

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

但是,如果主机打开了"安全模式",并且PATH不在safe_mode_allowed_env_vars指令中,则这将不起作用。