我试图从在Web浏览器的PHP文件运行以下命令执行任何动作:执行exec()命令不能从一个PHP页面
exec('festival --tts /var/www/test.txt &');
不幸的是,没有任何反应。我想尝试'回声',但没有什么可以返回来看看命令是否工作。我将test.txt的权限设置为777.我还在shell中运行了该命令,并且它的工作方式很好 - 只是在PHP脚本提交时没有。我究竟做错了什么?
我试图从在Web浏览器的PHP文件运行以下命令执行任何动作:执行exec()命令不能从一个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的用户的写入权限,该用户通常是基于debian的发行版的www-data
。
如果我正确理解你想要做的事情,你没有返回输入。语法如下:
exec('command', $output);
其中$ output是脚本输出将被存储的变量。奇怪的是,这个输出将作为一个数组返回,所以当你完成时,如果你期望一个字符串,不要忘记implode()
。
对不起,我不确定你的意思。这个命令没有输出,只有音频。 – Alligator
festival
程序是否打印任何输出?如果是这样,尝试捕获。同时检查返回值。
exec('/usr/bin/festival --tts /var/www/test.txt &', $output, $return);
转储输出数组,像这样:
var_dump($output);
任何非零返回值通常表示错误:
echo $return;
不,“节日”命令是一个文本转语音命令。只有音频作为输出。不过,我尝试了你写的东西,这就是返回的内容:array(0){} 0 – Alligator
你确定它没有做任何事情?至少在Ruby和Perl中,你也可以检查进程退出值 - 也就是'$?'。 – Linuxios