让用户 '_www' 执行 /usr/local/bin 中的二进制文件

让用户 '_www' 执行 /usr/local/bin 中的二进制文件

完全 *nix n00b,所以我提前道歉。我通过 homebrew 安装了 ffmpeg,现在我想从 PHP 脚本中调用它shell_exec(),例如ffmpeg -v。但什么也没发生。从终端运行正常。

Apache 以 的身份执行_www,因此我认为它没有足够的权限来查找 中的任何内容/usr/local/bin。因此,我在 中放置了一个指向 ffmpeg 二进制文件的符号链接/usr/bin。什么也没有。我可以运行,which ffmpeg但只给了我/usr/bin/ffmpeg。调用ffmpeg -version什么也没有输出。

我检查了 ffmpeg 上的权限是否设置为 755,但没有任何效果。有什么想法吗?

答案1

您可能需要考虑使用 PHP-FFmpeg 库来执行 ffmpeg 操作。

可以在这里获取:PHP-FFMpeg 库

希望这对您有帮助。

答案2

第一步是尝试通过调用 sudo -u _www -H [command] 以 _www-user 身份运行命令

这将以 _www-User 的身份运行 [命令],以便您可以看到终端上发生的情况。

但可能有一个更简单的解决方案。_www-User 的 PATH 变量中可能根本没有 /usr/local/bin。因此,您必须在脚本中调用 /usr/local/bin/ffmpeg 而不是 ffmpeg,一切运行正常。

答案3

请记住,ffmpeg 不会输出到stdout。如果调用它,则需要捕获stderr或重定向它。

因此,运行:

ffmpeg -v 2&>1

相关内容