2

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

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

不幸的是,什么也没有发生。我想过尝试“回声”,但没有什么可以返回来查看命令是否有效。我将 test.txt 的权限设置为 777。我还在 shell 中运行了该命令,它工作得很好——只是在由 PHP 脚本提交时不行。我究竟做错了什么?

4

3 回答 3

4

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

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

更新: 您需要确保创建文件的文件夹对运行 php 的用户具有写权限,该用户通常www-data在基于 debian 的发行版上。

于 2012-09-15T01:53:40.740 回答
1

如果我正确理解您要执行的操作,则您不会返回输入。其语法是:

exec('command', $output);

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

于 2012-09-15T01:56:02.233 回答
1

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

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

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

var_dump($output);

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

echo $return;
于 2012-09-15T01:57:44.160 回答