2012-01-07 60 views
0

我正在构建一个将在我的机器上运行的PHP Web应用程序,其目的之一是使用exec()或类似的调用来调用HandBrakeCLI。如果我运行命令我可以使用HandBrake从本地Web应用程序获取DVD吗?

HandBrakeCLI -i path_to_dvd_drive -o output_file --preset preset_name 

从壳,它工作正常。但是,当我将完全相同的命令放在exec()php函数(或类似的函数)中时,它不起作用,并且除了返回0状态外不会返回任何内容。没有错误,没有其他任何内容。

这只是一个简单的权限问题,我没有看到,由于没有错误吐出来?还是我错过了别的?

回答

1

对于调试,请尝试从控制台运行命令,但以PHP运行时的用户身份运行。 Here是一些指针如何找出哪个用户。使用sudo作为Apache用户运行该命令。您可能会从中获得更多有用的信息。

+0

完美!这有帮助。原来的错误是没有足够的访问DVD驱动器。我可以从那里去。 – 2012-01-07 21:11:24

0

在PHP执行exec()时调用的shell的路径中有手刹吗?无论帐户PHP/webserver运行在哪里都可以访问handbrak.exe所在的目录,并且有权执行handbrake.exe?网络服务器帐户是否有权访问DVD驱动器等...

许多事情要检查,没有更好的诊断信息,这是关于最好的你能够到达这里。

+0

这是一台Ubuntu机器。从Ubuntu软件中心安装HandBrakeCLI以及PHP。我有点希望至少能指出我可以在哪里找到阻止它运行的问题的日志记录。 – 2012-01-07 21:01:06

1

尝试使用绝对路径(类型which HandBrakeCLI在终端找到它),并追加2>&1到命令的末尾,就像给exec脚本:

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

这样,如果命令输出什么标准错误你会看到它。