Ошибка сегментации (сбрасывается ядро) с использованием php SoapServer - PullRequest
0 голосов
/ 27 февраля 2019

Я использую 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 Но если я не возвращаю массив, у меня нет ошибок, просто пустой ответ.

1 Ответ

0 голосов
/ 28 февраля 2019

Не знаю почему, но если я верну ассоциативный массив, все будет нормально.

return ['ResultCode' => $ret[0], 'Data' => $ret[1]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...