Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php shell_exec中的Lame编码器命令不';不能通过http服务器工作_Php_Shell Exec_Lame - Fatal编程技术网

php shell_exec中的Lame编码器命令不';不能通过http服务器工作

php shell_exec中的Lame编码器命令不';不能通过http服务器工作,php,shell-exec,lame,Php,Shell Exec,Lame,我在php中通过shell_exec脚本运行lame编码器时遇到问题 这个脚本解决了我的问题,并注意到如果我在终端中通过php命令运行脚本,它可以工作,但是如果我在浏览器中打开它,它就不能工作。 我将所有文件的权限设置为777以防万一 这是密码 < ?php exec('lame -f -V 9 ../furniture/sound/107887.wav ../furniture/sound/107887.ogg');

我在php中通过shell_exec脚本运行lame编码器时遇到问题

这个脚本解决了我的问题,并注意到如果我在终端中通过php命令运行脚本,它可以工作,但是如果我在浏览器中打开它,它就不能工作。 我将所有文件的权限设置为777以防万一

这是密码

< ?php

exec('lame -f -V 9 ../furniture/sound/107887.wav ../furniture/sound/107887.ogg');
<?php
执行官('lame-f-V 9../furniture/sound/107887.wav../furniture/sound/107887.ogg');
问题是,如果我用php命令在终端中运行脚本,它就可以工作,但不能通过浏览器运行

哦,这个scirpt最长只需要两秒钟,所以它不是超时或其他什么。我也没有得到php或nginx错误


如何解决这个问题?

可能有很多原因导致它无法从Web服务器上运行,可能与资源或权限有关。您可以通过使用exec的第二个可选参数找到这一点:

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

在php的执行路径
上有缺陷吗?试着用
/usr/bin/lame
或任何东西替换
lame

文件参数的相对路径名如何?PHP看到的当前目录中的
。/furniture/
等是否正确?如果有疑问,也用完整路径名替换这些路径名,看看这是否解决了问题


不太可能,但值得一提:您可能需要检查
lame
本身是否设置了所有可执行位。如果您拥有该文件,并且它只能由所有者执行,apache将无法运行它。

exec
在通过nginx运行PHP时可能被禁用。我已经记不起如何启用它了(一般来说,这是一个安全漏洞,所以应该禁用它)。至少应该给google一些东西……该命令是否返回任何错误?不,问题是在最初的脚本中,我运行了几个shell_exec命令,这些命令似乎工作得很好。脚本使用此命令停止exec Comand并返回一个空字符串我会尝试使用完整路径开始-PHP不需要运行,当前工作目录与脚本存储的目录相同。而且,它可能是。