任何想法,为什么我可以从命令行执行命令,但不是从PHP exec()

好,

我做了一些有创意的search,有点打路障。

我正在尝试使用Linux程序“sox”。 我正试图从我的PHP脚本中调用它。 如果我使用命令行,脚本可以工作。 但是,当我使用PHP的exec,它不起作用。

例:

sox file1.mp3 file2.mp3 tempfile.mp3 -V3 

(“V3”指定了详细的输出)

在命令行中以“用户X”或root身份执行时,可以创build新文件。 但是,当我执行命令为:

 <?php exec('sox file1.mp3 file2.mp3 tempfile.mp3 -V3', $output); foreach($output as $line){ print $line; } 

它不会生成新的文件。 而且,应该返回该命令的结果的数组是空白的。

我已经做了一个简单的文字

 exec(ls,$output); 

我得到根目录的内容。

我使用了PHP命令get_current_user() ,它返回了作为网站根目录的所有者。

但是,当我使用linux命令whoami我发现它将当前的人视为“apache”。 我需要给apache使用该程序的权利吗?

我将继续在网上search,做试验和错误,试图弄清楚我做错了什么。 任何帮助表示赞赏。

澄清

  • 我不是在安全模式(我检查了phpinfo()页面)

Solutions Collecting From Web of "任何想法,为什么我可以从命令行执行命令,但不是从PHP exec()"

通常这是一个路径问题。 您尝试调用的应用程序可能不在Web服务器的用户帐户的搜索路径中。 我只使用完整路径从PHP调用应用程序。 我将该路径存储在设置文件中,以便在任何系统上使用。

我相信php运行你的Apache的用户,这通常是没有人(没有权限创建目录的用户)。 尝试创建你的输出的地方,每个人都可以写,并检查用户Apache下运行。

检查您是否正在safe_mode中运行PHP