我正在使用QBXML方法与本地计算机上的QuickBooks通信(不是远程的,也不是使用web连接器的)。
我有一个非常基本的脚本,它只是连接到QuickBooks并检查客户是否存在。该脚本在通过命令控制台(Windows XP)运行时运行得很好,但同样的脚本(没有更改)在作为CGI运行时不起作用。
当作为CGI运行时,脚本不会从QuickBooks获得响应XML。其他一切似乎都是一样的--只是没有收到来自QuickBooks的XML响应。
我昨晚用头撞了两个小时想弄清楚...没有成功。
发布于 2010-09-08 22:28:40
通常,当某些东西在命令行上工作,但在另一个环境中不起作用时,这意味着您缺少环境变量或存在权限问题。
您可以通过以下命令来诊断环境变量
#!/usr/bin/perl
print "Content-type: text/plain\n\n"
print "$_ => $ENV{$_}\n" for keys %ENV;在命令行和通过CGI。
发布于 2010-09-09 13:44:37
事实证明这不是代码或环境的问题,对于这种特殊的情况(QB,OLE/ XML ),当在Apache下作为服务运行时,从QuickBooks获取响应XML的能力似乎是问题所在。通过控制台运行的Apache起作用了。当然,这是不可行的,因为我需要它作为服务运行,所以我将使用Abyss Web Server,它在下面运行得很好。
发布于 2010-09-15 13:29:27
当从服务调用时,QuickBooks桌面SDK连接被拒绝。这是intuit故意施加的限制,但据我所知,原因从未披露过。应用程序必须在交互式登录用户的上下文中运行才能建立连接。我不确定Abyss Web Server为什么工作,它是在一个与interact登录关联的帐户下运行的吗?
过去可以通过服务打开SDK连接,但帐户限制在几年前就出现了,没有大张旗鼓或解释。有一种解决此问题的方法:您可以使用DCOM将SDK请求程序作为单独的进程启动,然后使用DCOM配置为DCOM进程分配适当的帐户。您可以在SDK文档和Intuit论坛中找到有关如何执行此操作的详细信息。
https://stackoverflow.com/questions/3668698
复制相似问题