我正在使用带有企业WSDL的PHP Toolkit(v20)来访问我的Web应用程序中的Salesforce对象和记录。
我成功地在我的本地主机上工作了一切。
当我将脚本上传到我的虚拟主机(inmotion)时,创建功能根本不起作用。它不显示任何错误或警告(尽管我已将错误报告设置为 E_ALL),但脚本的执行在遇到 create 函数时会停止。
但是,使用查询函数或获取服务器时间戳之类的操作运行查询可以正常工作。
同样,它在我的本地主机上工作正常,所以我认为这不是代码问题,但对于我的生活,我无法弄清楚问题,因为没有显示错误/警告或抛出异常。
我应该澄清一下,尽管在此示例中我尝试插入到我的自定义对象中,但我也尝试插入到标准客户或联系人对象中,并且没有任何区别。
如果有人可以指导我如何尝试解决问题,那就太好了。
谢谢。
代码如下:
<html>
<head></head>
<body>
<?php
ini_set("soap.wsdl_cache_enabled", "0");
define("USERNAME", "myusername");
define("PASSWORD", "mypassword");
define("SECURITY_TOKEN", "mysecuritytoken");
require_once ('soapclient/SforceEnterpriseClient.php');
try {
$sflink = new SforceEnterpriseClient();
$sflink->createConnection("soapclient/auv.wsdl.xml",null,array('trace'=>true));
//$sflink->createConnection("soapclient/auv.wsdl.xml");
$sflink->login(USERNAME, PASSWORD.SECURITY_TOKEN);
// Test to get the server timestamp - Works fine.
echo "Getting Timestamp<br>";
$resp = $sflink->getServerTimestamp();
print_r($resp);
echo "<br>";
// Test to query the server - Works fine.
$query = "SELECT Id, AccountId, FirstName, LastName FROM Contact WHERE Email = 'ankur@alfauv.com'";
$response = $sflink->query($query);
echo "Select result is: <br>";
print_r($response);
echo "<br>";
// Insert into UVSI Search Object (My custom object) - Does not work
$sObject = new stdclass();
$sObject->Account__c = "00190000006yxUrAAI";
$sObject->Contact__c = "00390000005ZYLcAAO";
$sObject->Application__c = "AAP";
$sObject->Flow__c = 66;
$sObject->Flow_Unit__c = "m3-hr";
$sObject->Dose__c = 33;
$sObject->UVT__c = 99;
echo "Attempting creation<br>";
$createResponse = $sflink->create(array($sObject), 'UVSI_Search__c');
echo "This line never prints.<br/>";
} catch (Exception $e) {
echo "In error condition<br>";
echo $sflink->getLastRequest();
echo $e->faultstring;
exit();
}
?>
</body>
</html>
打破了3天之后,我终于找到了解决方案。我将网站的PHP版本从5.2更改为5.3,问题就消失了。
我仍然不知道为什么它不起作用,但这是其他人遇到类似问题的解决方案。