我在php中通过shell_exec脚本运行lame encoder有问题。
并且我的问题突破了这个脚本,并注意到如果我通过终端中的php命令运行它,脚本可以正常工作,但如果我在浏览器中打开它则不起作用。 为了以防万一,我将所有文件的权限设置为777。
这里是代码
< ?php
exec('lame -f -V 9 ../furniture/sound/107887.wav ../furniture/sound/107887.ogg');
如果我使用php命令在终端中运行脚本,那么脚本是可行的,但不是通过浏览器。
哦,这个scirpt需要最多两秒钟,所以它不会超时或任何事情。我也没有得到php或nginx错误。
我该如何解决这个问题?
答案 0 :(得分:2)
对php的执行PATH
感到茫然吗?尝试用lame
或其他任何内容替换/usr/bin/lame
。
文件参数的相对路径名怎么样?从PHP看到的当前目录中../furniture/
等是否正确?如果有疑问,请将这些替换为完整路径名,看看是否能解决问题。
不太可能但值得一提:您可能希望检查lame
本身是否设置了所有可执行位。如果你拥有该文件并且它只能由所有者执行,那么apache将无法运行它。
答案 1 :(得分:0)
可能有很多原因导致它无法通过网络服务器工作,可能与资源或权限相关。你可以使用exec的第二个可选参数找到它:
<?php
$output = "";
exec('lame -f -V 9 ../furniture/sound/107887.wav ../furniture/sound/107887.ogg',$output);
echo $output;
?>