我正在尝试从Web浏览器中的PHP文件运行以下命令:
exec('festival --tts /var/www/test.txt &');
不幸的是,没有任何反应。我想过尝试“回声”,但没有什么可以回来查看命令是否正常工作。我将test.txt的权限设置为777.我还在shell中运行该命令,它运行正常 - 只是在PHP脚本提交时没有。我做错了什么?
答案 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;