После того, как я перевел свой проект 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;
}