我有一台有一个小站点的macOS服务器,该站点使用say命令将文本片段转换为音频。
升级到Sierra后,除了一件事情外,一切都变得顺利了:将say命令包装exec()到我的PHP脚本中后,该命令不再起作用。
页面刚刚超时。也没有发现错误。
<?php
try {
exec('/usr/bin/say "hello"');
}
catch (Exception $e) { echo $e->getMessage(); }
?>
Run Code Online (Sandbox Code Playgroud)
通常,我会用它们保存音频片段,say -o filename但我尝试了所有变体以及其他运行良好的shell命令,包括在输出文件夹中创建文件。
有趣的是,如果我从命令行运行它,则可以正常工作-大声说出来或创建一个输出文件。
macOS Sierra具有PHP 5.6.24,所以我认为safe_mode不适用,对吗?
我想强调一下,在新操作系统中,PHP或say命令的更改是最近的。是的,我确实调查过并尝试了不同的输出和stderr重定向,但是脚本只是挂起了。
say在Activity Viewer(top等效于GUI )中看到命令后,我尝试对其进行采样,不确定是否有帮助:
2695 Thread_1742595 DispatchQueue_1: com.apple.main-thread (serial)
+ 2695 start (in libdyld.dylib) + 1 [0x7fffb0f58255]
+ 2695 ??? (in say) load address 0x10907d000 + 0x1fac [0x10907efac]
+ 2695 NewSpeechChannel (in SpeechSynthesis) + 52 [0x7fff9acd3f19]
+ 2695 SpeechChannelHandle::SpeechChannelHandle() (in SpeechSynthesis) + 265 [0x7fff9acd797f]
+ …Run Code Online (Sandbox Code Playgroud)