Я использую php7 и apache 2 для создания API мыла, и у меня есть такой обработчик:
$app->any('/xmlrpc', function (\Slim\Http\Request $request, \Slim\Http\Response $response) use ($app) {
$soap = \System\Core\Soap::getInstance();
$soapHandler = new \Application\Controllers\Soap($app->getContainer());
$soap->setObject($soapHandler);
$soap->handle($request->getBody()->getContents());
});
Мой класс \ System \ Core \ Soap просто оболочка для одиночного пакета:
class Soap
{
/**
* @var self
*/
private static $oInstance;
/**
* @var \SoapServer
*/
private $soap;
/**
* Soap constructor.
*/
protected function __construct()
{
$this->soap = new \SoapServer(env('SOAP_WSDL_PATH'), ['cache_wsdl' => 1]);
}
/**
* Return instance
*
* @return Soap
*/
public static function getInstance(): self
{
if (null === self::$oInstance) {
self::$oInstance = new self();
}
return self::$oInstance;
}
/**
* @param string $class
*/
public function setClass(string $class, $args): void
{
$this->soap->setClass($class, $args);
}
/**
* @param $object
*/
public function setObject($object): void
{
$this->soap->setObject($object);
}
/**
* @param string $request
*/
public function handle(string $request): void
{
$this->soap->handle($request);
}
/**
* @param string $code
* @param string $string
* @param string|null $actor
* @param string|null $details
*/
public function fault(string $code, string $string, ?string $actor = null, ?string $details = null): void
{
$this->soap->fault($code, $string, $actor, $details);
}
}
И у меня есть класс обработчика \ Application \ Controllers \ Soap Когда методы-обработчики возвращают массив, у меня возникает ошибка вроде: [core:notice] [pid 1] AH00051: child pid 7 exit signal Segmentation fault (11), possible coredump in /etc/apache2
Но если я не возвращаю массив, у меня нет ошибок, просто пустой ответ.