PHP exec 命令没有 $output 但 $return 是 0

PHP exec command not having an $output but $return is 0

这是我执行来自 PHP:

命令的代码
            $execQuery = sprintf("/usr/local/bin/binary -mode M \"%s\" %u %s -pathJson \"/home/ec2/fashion/jsonS/\" -pathJson2 \"/home/ec2/fashion/jsonS2/\"", $path, $pieces, $type);
            exec($execQuery, $output, $return);

$return 值始终为 0,但 $output 为空。 $output 应该是 JSON.

有什么问题吗? 提前谢谢你。

好吧,可能会发生一些事情...

  1. 您正在 运行 将此二进制文件写入其他 STDOUT(例如,STDERR)
  2. PHP 用户可用的环境变量与用户 运行 控制台可用的环境变量不同(这些变量是必需的)
  3. PHP用户无权访问涉及的部分文件。

为了调试,最好使用proc_open代替exec,并检查STDOUT和STDERR。这可能会为您提供有关正在发生的事情的更多信息。

建议(和无耻的广告)

我为 PHP 写了一个 small utility library 以更安全的方式执行外部程序并提供额外的调试信息。它可能会帮助您,至少查明问题所在。