PHP中的细分错误错误,使用SOAP连接到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)中,因此我怀疑是Accelerator或类似的东西:
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
));
即使使用本机PHP SoapClient类,也是如此.
标签:soap,segmentation-fault,salesforce,php 来源: https://codeday.me/bug/20191023/1913448.html