我正在构建一个PHP应用程序,它将在我的机器上运行,它的目的之一是通过exec()或类似的调用来调用HandBrakeCLI。如果我运行该命令
HandBrakeCLI -i path_to_dvd_drive -o output_file --preset preset_name在shell中,它工作得很好。但是,当我将完全相同的命令放入exec() php函数(或类似函数)中时,它不起作用,除了返回状态0之外,不会返回任何内容。没有错误,没有其他。
这只是一个简单的权限问题,我没有看到,因为没有错误被吐出来?或者我还漏掉了什么?
发布于 2012-01-08 05:06:08
要进行调试,请尝试从控制台运行该命令,但以PHP用户身份运行。Here是一些如何找出是哪个用户的指针。
然后使用sudo以Apache用户身份运行该命令。你可能会从中得到更多有用的信息。
发布于 2012-01-08 05:11:13
尝试使用绝对路径执行脚本(在终端中键入which HandBrakeCLI以找到它),并将2>&1附加到命令的末尾,如下所示:
exec('HandBrakeCLI -i path_to_dvd_drive -o output_file --preset preset_name 2>&1')
这样,如果命令将任何内容输出到stderr,您将看到它。
发布于 2012-01-08 04:50:41
当PHP执行exec()时,它所调用的shell的路径中是否有handbrake?运行PHP/webserver的账号是否有权访问handbrak.exe所在的目录,并有权执行handbrake.exe?etc服务器帐户是否具有访问dvd驱动器等的权限...
要检查的东西很多,如果没有更好的诊断信息,这将是您在这里所能得到的最好的信息。
https://stackoverflow.com/questions/8772968
复制相似问题