4

我尝试运行 PHP 脚本并从 stdout 获取输出,代码如下所示:

using namespace boost::process;

std::string exec="php";
std::vector<std::string> args;

// I must to throw the exe by argument
args.push_back("php");
args.push_back("a.php");

context ctx;
ctx.stdout_behavior = capture_stream();
child c = launch(exec, args, ctx);

pistream &is = c.get_stdout();

stdout 没有信息,但在 stderr 我得到:

“boost::process::detail::posix_start: execve(2) failed: Permission denied”

当我在终端中运行完全相同的命令时,它工作正常!

有什么解决办法吗?

谢谢..

4

1 回答 1

3

谢谢@hakre,你给了我正确的方向!

我去 /usr/bin/ 检查权限,看到 php5 命令与 php 具有相同的权限(php 是 php5 的链接)。

我不明白为什么,但是当我将命令替换为 php5 时,以前的错误替换为:“没有这样的文件或目录”,当我给出完整路径时,它工作正常:

exec="/usr/bin/php5";
args.clear();
args.push_back("php5");
于 2012-11-09T19:18:48.713 回答