Linux中的Exec()命令不会从PHP页面执行任何操作

时间:2012-09-15 01:50:31

标签: php linux exec festival

我正在尝试从Web浏览器中的PHP文件运行以下命令:

 exec('festival --tts /var/www/test.txt &');

不幸的是,没有任何反应。我想过尝试“回声”,但没有什么可以回来查看命令是否正常工作。我将test.txt的权限设置为777.我还在shell中运行该命令,它运行正常 - 只是在PHP脚本提交时没有。我做错了什么?

3 个答案:

答案 0 :(得分:4)

提供festival二进制文件的完整路径,您可以使用which festival命令在控制台上找到它,然后在您的exec调用中使用它,如下所示:

exec('/usr/bin/festival --tts /var/www/test.txt &');

<强>更新 您需要确保创建文件的文件夹对运行php的用户具有写入权限,对于基于debian的发行版通常为www-data

答案 1 :(得分:1)

如果我理解你正在尝试做什么,你就不会返回输入。其语法是:

exec('command', $output);

其中$ output是存储脚本输出的变量。奇怪的是,这个输出将作为一个数组返回,所以如果你想要一个字符串,不要忘记implode()它。

答案 2 :(得分:1)

festival程序是否打印任何输出?如果是这样,请尝试捕获它。还要检查返回值。

exec('/usr/bin/festival --tts /var/www/test.txt &', $output, $return);

转储输出数组,如下所示:

var_dump($output);

任何非零返回值通常都表示错误:

echo $return;