CakePHP 3服务器在运行请求/响应时返回false

时间:2019-02-03 09:18:54

标签: cakephp cakephp-3.0

将cakephp 3.x项目在线后,从webroot文件夹内的index.php文件返回“ string(1)“ 0””作为返回值。

这是将返回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;
    }

0 个答案:

没有答案