Сервер CakePHP 3 возвращает false при выполнении запроса / ответа - PullRequest
0 голосов
/ 03 февраля 2019

После того, как я перевел свой проект cakephp 3.x в оперативный режим, я получил 'string (1) "0" в качестве возврата из файла index.php внутри папки webroot.

Эта часть возвращает false:

// Bind your application to the server.
$server = new Server(new Application(dirname(__DIR__) . '/config'));

// Run the request/response through the application
// and emit the response.
$server->emit($server->run()); // -> returns false 

Я проверил журнал ошибок на сервере и выполнил некоторую отладку, но не могу найти решение, чтобы это исправить.Когда я запускаю этот проект на моей локальной машине (MAMP), он работает нормально.

Обновление 2019-02-09:

После выполнения другого сеанса отладки я обнаружил, что 'string () "0" "создается описанным ниже методом.Этот класс Runner.php находится по адресу '/ vendor / cakephp / cakephp / src / Http / Runner.php' .Но я не могу найти каких-то странных различий между моей локальной и серверной средой, встретившими дамп $request или $response.Также $middleware не отличается.

Метод из Runner.php класса:

 /**
     * @param \Cake\Http\MiddlewareQueue $middleware The middleware queue
     * @param \Psr\Http\Message\ServerRequestInterface $request The Server Request
     * @param \Psr\Http\Message\ResponseInterface $response The response
     * @return \Psr\Http\Message\ResponseInterface A response object
     */
    public function run($middleware, ServerRequestInterface $request, ResponseInterface $response)
    {
        $this->middleware = $middleware;
        $this->index = 0;

        // this method produced the 'string (1) "0"'. But why??
        return $this->__invoke($request, $response);
    }

    /**
     * @param \Psr\Http\Message\ServerRequestInterface $request The server request
     * @param \Psr\Http\Message\ResponseInterface $response The response object
     * @return \Psr\Http\Message\ResponseInterface An updated response
     */
    public function __invoke(ServerRequestInterface $request, ResponseInterface $response)
    {
        $next = $this->middleware->get($this->index);
        if ($next) {
            $this->index++;

            return $next($request, $response, $this);
        }

        // End of the queue
        return $response;
    }
...