Первый Вы можете всегда пытаться установить SoapHeader следующим образом:
$header = new SoapHeader('{NAMESPACE__YOU_CAN_FIND_IT_IN_YOUR_WSDL__TARGETNAMESPACE}', 'SessionPersistenceHeader');
$client = new SoapClient('xxxx.wsdl', array('trace' => 1, 'exceptions' => 1));
$client->__setSoapHeaders($header);
Второй параметр SoapHeader выбирается свободно, а третий параметр является необязательным и может быть пустым для решения этой проблемы.проблема.Просто добавьте пустой заголовок.
... и секунда вы не должны делать session_start()
до инициализации вашего сервера.
... и третий попытайтесь не устанавливать ваши php.ini-настройки во время выполнения, но в самом php.ini.
Подсказка: когда вы используете Zend / Soap / Client.php из Zend Framework 2, SoapHeader будетвсегда установлен.Это решает это для меня.
ИСПЫТАНИЯ: Лучший способ протестировать ваш SoapServer на SOAP_PERSISTENCE_SESSIONs
- это использовать класс Variable, установщик и получатель для него.
Вот примеркласс:
<?php
class soaptest {
/**
* var
*
* @var int
* @access private
*/
private $_var = 0;
/**
* setVar
*
* @param int $value
* @access public
* @return void
*/
public function setVar($value) {
$this->_var = $value;
}
/**
* getVar
*
* @access public
* @return int
*/
public function getVar() {
return $this->_var;
}
}
?>
и чем в вашем TestClient:
<?php
// [...]
$value = 123;
$client->setVar($value);
$result = $client->getVar();
if ($value == $result) {
echo 'SoapAPI is session persistent.';
} else {
echo 'SoapAPI is NOT session persistent.';
}
?>