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