我正在尝试从 Web 浏览器中的 PHP 文件运行以下命令:
exec('festival --tts /var/www/test.txt &');
不幸的是,什么也没有发生。我想过尝试“回声”,但没有什么可以返回来查看命令是否有效。我将 test.txt 的权限设置为 777。我还在 shell 中运行了该命令,它工作得很好——只是在由 PHP 脚本提交时不行。我究竟做错了什么?
提供festival
二进制文件的完整路径,您可以在控制台上使用which festival
命令找到它,然后在 exec 调用中使用它,如下所示:
exec('/usr/bin/festival --tts /var/www/test.txt &');
更新:
您需要确保创建文件的文件夹对运行 php 的用户具有写权限,该用户通常www-data
在基于 debian 的发行版上。
如果我正确理解您要执行的操作,则您不会返回输入。其语法是:
exec('command', $output);
其中 $output 是存储脚本输出的变量。奇怪的是,这个输出将作为一个数组返回,所以implode()
如果你期待一个字符串,当你完成时不要忘记它。
程序是否festival
打印任何输出?如果是这样,请尝试捕获它。还要检查返回值。
exec('/usr/bin/festival --tts /var/www/test.txt &', $output, $return);
转储输出数组,如下所示:
var_dump($output);
任何非零返回值通常表示错误:
echo $return;