0
votes

I use php7 and apache 2 for making soap API, and i have a handler like this:

$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());
});

My \System\Core\Soap class is just singletone wrapper:

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);
    }
}

And I have a handler class \Application\Controllers\Soap When handler methods returning array, I have an error like: [core:notice] [pid 1] AH00051: child pid 7 exit signal Segmentation fault (11), possible coredump in /etc/apache2 But if I don't return array I don't have errors, just empty response.

1

1 Answers

0
votes

I don't know, why, but if I return associative array all work ok.

return ['ResultCode' => $ret[0], 'Data' => $ret[1]];