2012-05-02 48 views
0

我有一个问题,通过运行在PHP脚本shell_exec脚本。Lame编码命令在PHP shell_exec不能通过http服务器工作

而我的问题已经打破了这个脚本,并且注意到如果我通过终端中的php命令运行脚本,脚本就能正常工作,但如果我在浏览器中打开它,则不起作用。 为了以防万一,我将所有文件的权限设置为777。

这里的代码

< ?php 

exec('lame -f -V 9 ../furniture/sound/107887.wav ../furniture/sound/107887.ogg'); 

的事情是,如果我在使用PHP命令终端运行该脚本工作,但通过浏览器不。

哦,这个scirpt需要最多两秒钟,所以它不会是一个超时或任何东西。我也没有得到PHP或Nginx的错误。

我该如何解决这个问题?

+0

当通过nginx运行PHP时,'exec'可能被禁用。无法记住我的头顶如何启用它(并且通常它是一个安全漏洞,因此它应该被禁用)。至少应该给你的东西谷歌... – Endophage

+0

做的命令返回任何错误? – jarchuleta

+0

不,事情是,在最初的脚本中,我运行了几个shell_exec命令,这似乎很好。这个脚本与这一个中止 –

回答

2

是PHP的执行PATH跛脚:您可以通过使用EXEC的第二个可选参数发现这一点?尝试更换lame/usr/bin/lame或其他。

如何对文件参数的相对路径名?如PHP所示,../furniture/等是否从当前目录更正?如果有疑问,请用完整的路径名替换它们,看看是否可以解决问题。

不太可能但值得一提:您可能想要检查lame本身是否已设置其所有可执行位。如果你拥有这个文件,它只能由拥有者执行,Apache将无法运行它。

+0

使用/ usr/local/bin/lame工作。谢谢。 –

0

可能有很多原因,它不是从web服务器工作,也许是资源或权限相关。

<?php 
$output = ""; 
exec('lame -f -V 9 ../furniture/sound/107887.wav ../furniture/sound/107887.ogg',$output); 
echo $output; 
?> 
相关问题