簡體   English   中英

PHP中的分段錯誤錯誤,使用SOAP連接到SalesForce

[英]Segmentation Fault error in PHP, using SOAP to connect to SalesForce

我正在使用SalesForce PHP Toolkit將我的軟件(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
));

即使使用本機PHP SoapClient類也是如此。

好吧,這並不能解決潛在的問題,但是,如果有人在SalesForce和PHP中遇到同樣的問題......

盡管文檔暗示,字段SendNotificationEmail和OverwriteLeadSource都是強制性的,但您必須在調用中指定它們。

不這樣做應該給你一個很好的錯誤,而不是SegFault,但仍然可以解決它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM