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