php - PHP 中的段错误,使用 SOAP 连接到 SalesForce

标签 php soap segmentation-fault salesforce

我正在使用 SalesForce PHP 工具包将我的软件 (PHP) 与 SalesForce 集成。

到目前为止,一切都很好,但是当我开始编写调用 convertLead() 的代码时,我遇到了“Segmentation Fault”错误。

这是我正在运行的代码:

require_once('../salesforce/SforceEnterpriseClient.php');
ini_set('soap.wsdl_cache_enabled', 0);
$SForce = new SforceEnterpriseClient();

$result = $SForce->createConnection('../salesforce/enterprise.wsdl.xml');
$result = $SForce->login('user', 'pass+token');
    echo "Logged In!";
$data = array(
    'convertedStatus' => 'Converted',
    'leadId' => '00QC000000mDcmJMAS'
);
$result = $SForce->convertLead(array($data));

就是这样。我遇到了段错误。我尝试使用 StdClass 而不是键控数组,同样的事情。 SF 工具包中的 convertLead 方法非常简单,它只是将相同的方法调用到 SoapClient 实例中...

注意:我是从 CLI 运行这个脚本,而不是通过 Apache。


更新:刚刚尝试用我的脚本运行“strace”。它的最后几行是:

close(4)                                = 0
write(1, "Logged IN!", 10Logged IN!)              = 10
open("error_log", O_WRONLY|O_CREAT|O_APPEND, 0644) = 4
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++

此外,如果它是相关的:

php --version
PHP 5.2.13 (cli) (built: Jul 17 2010 22:01:13)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
    with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator
    with the ionCube PHP Loader v3.3.20, Copyright (c) 2002-2010, by ionCube Ltd., and
    with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies

这也发生在我的开发机器 (Windows) 中,所以我怀疑是加速器或类似的东西造成的:

php --version
PHP 5.2.13 (cli) (built: Feb 24 2010 14:37:44)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies

这可能特定于 SalesForce,也可能不特定。可能不是,似乎是 SOAP PHP 库中的错误。也许请求/响应已损坏,但我看不到它们,因为它们是 HTTPS。

我有什么想法可以诊断(或更重要的是,解决)这个问题吗?

谢谢!
丹尼尔

最佳答案

PHP soap 扩展中有一个错误(4 年后仍然存在)。它与它处理 WSDL 缓存的方式有关。使用 ini_set() 禁用缓存不起作用。您还需要关闭特定客户端实例的缓存。

return new SforceEnterpriseClient('../salesforce/enterprise.wsdl.xml', array(
    'cache_wsdl' => WSDL_CACHE_NONE
));

即使使用 native PHP SoapClient 类也是如此。

关于php - PHP 中的段错误,使用 SOAP 连接到 SalesForce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5052804/

相关文章:

php google app engine在本地开发服务器上上传文件

Python SOAP 客户端 - 使用 SUDS 还是其他?

java - WSDL 和 AXIS ADB

c++ - 来自 hflip 的段错误

php - 使用检测移动浏览器脚本进行平板电脑检测?

php - 如何从 URL 参数查询 API

php - “git pull”在 SSH 中执行,但不在 github 接收后脚本中执行

c# - 在没有代理客户端的情况下使用 WCF 服务

c++ - 如何在 C++ 中创建包含子类的类的链表?

C - 使用出队进行回绕时队列的段错误