相关疑难解决方法(0)

macOS Sierra中的更改阻止了“ say”在PHP脚本中执行

我有一台有一个小站点的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)

php exec macos-sierra

5
推荐指数
1
解决办法
625
查看次数

标签 统计

exec ×1

macos-sierra ×1

php ×1