为什么PHP COM对象没有返回正确的结果?
问题描述:
我想使用PHP访问Windows SAPI5或文本到语音(TTS)。标准方法是为“SAPI.SpVoice”创建一个COM对象,然后获取已安装的声音。为什么PHP COM对象没有返回正确的结果?
示例PHP代码:
<?php
$obj = new COM('SAPI.SpVoice');
$voices = $obj->GetVoices;
$count = $voices->Count;
print $count; #prints "1"
不幸的是,从PHP的COM对象返回的输出不正确,因为我有我的系统上安装5周的声音,但PHP只能返回1
所以,只是为了检查如果这是一个PHP特定的问题,我在Perl 5.8(草莓)中编写了相同的代码。
样品Perl代码:
#!/usr/bin/perl
use Win32::OLE;
my $obj = Win32::OLE->new('SAPI.SpVoice');
my $voices = $obj->GetVoices;
my $count = $voices->Count;
print $count; #print "5" which is correct.
所以正确的Perl代码返回,我有我的系统上5和TTS人声,但是PHP只返回1?
这是一个错误还是我做错了什么?这可能是什么原因?
P.S.我在两台不同的计算机上试过这个,结果是一样的。
我猜我自己想通了。它看起来像是我使用了32位版本的PHP,然后我得到了正确的结果(5个声音)。但由于我默认安装了64位版本,我只能获得1个声音。现在解决了..谢谢! – supersan
P.S.请问任何MOD可以告诉我我应该怎样处理这个问题。我是否应该将此评论发布为解决方案,还是应该保留原样?谢谢。 – supersan
如果您发现问题的解决方案,则发布并接受您自己的答案是完全可以接受的。 http://*.com/help/self-answer –