我可以用HandBrake从本地网络应用程序翻录DVD吗


Can I rip DVDs from a local web app with HandBrake?

我正在构建一个将在我的机器上运行的PHP web应用程序,它的目的之一是用exec()或类似的调用调用HandBrakeCLI。如果我运行命令

HandBrakeCLI -i path_to_dvd_drive -o output_file --preset preset_name

从外壳上看,它工作得很好。然而,当我在exec()php函数(或类似函数)中放入完全相同的命令时,除了返回状态为0之外,它不起作用,也不返回任何内容。没有错误,没有其他错误。

这只是一个我没有看到的简单权限问题吗?因为没有出现错误?还是我错过了什么?

对于调试,请尝试从控制台运行命令,但以用户的身份运行PHP

然后使用sudo以Apache用户的身份运行该命令。你可能会从中得到更多有用的信息。

尝试使用绝对路径执行脚本(在终端中键入which HandBrakeCLI以找到它),并将2>&1附加到命令末尾,如:

exec('HandBrakeCLI -i path_to_dvd_drive -o output_file --preset preset_name 2>&1')

这样,如果命令向stderr输出任何内容,您就会看到它。

在执行exec()时,是否在调用任何shell PHP的路径中手动刹车?无论PHP/webserver在哪个帐户下运行,都有权访问handbrak.exe所在的目录,并有权执行handbrake.exe吗?Web服务器帐户是否具有访问dvd驱动器等的权限…

有很多东西需要检查,而且没有更好的诊断信息,这是你在这里能得到的最好的信息。