SlimExceptionHttpNotFoundException异常
我正在创建一个新的Slim项目,并收到以下错误:
超薄应用程序错误:
由于以下错误,应用程序无法运行:
错误详细信息
Type: SlimExceptionHttpNotFoundException
Code: 404
Message: Not found.
File: C:xampphtdocsMyApivendorslimslimSlimMiddlewareRoutingMiddleware.php
Line: 91
跟踪
#0 C:xampphtdocsMyApivendorslimslimSlimMiddlewareRoutingMiddleware.php(57): SlimMiddlewareRoutingMiddleware->performRouting(Object(SlimPsr7Request))
#1 C:xampphtdocsMyApivendorslimslimSlimMiddlewareDispatcher.php(124): SlimMiddlewareRoutingMiddleware->process(Object(SlimPsr7Request), Object(SlimRoutingRouteRunner))
#2 C:xampphtdocsMyApivendorslimslimSlimMiddlewareErrorMiddleware.php(89): class@anonymous->handle(Object(SlimPsr7Request))
#3 C:xampphtdocsMyApivendorslimslimSlimMiddlewareDispatcher.php(124): SlimMiddlewareErrorMiddleware->process(Object(SlimPsr7Request), Object(class@anonymous))
#4 C:xampphtdocsMyApivendorslimslimSlimMiddlewareDispatcher.php(65): class@anonymous->handle(Object(SlimPsr7Request))
#5 C:xampphtdocsMyApivendorslimslimSlimApp.php(174): SlimMiddlewareDispatcher->handle(Object(SlimPsr7Request))
#6 C:xampphtdocsMyApivendorslimslimSlimApp.php(158): SlimApp->handle(Object(SlimPsr7Request))
#7 C:xampphtdocsMyApipublicindex.php(18): SlimApp->run()
#8 {main}
这是我的index.php
<?php
use PsrHttpMessageResponseInterface as Response;
use PsrHttpMessageServerRequestInterface as Request;
use SlimFactoryAppFactory;
require '../vendor/autoload.php';
$app = AppFactory::create();
$app->addRoutingMiddleware();
$errorMiddleware = $app->addErrorMiddleware(true, true, true);
$app->get('/hello/{name}', function (Request $request, Response $response, array $args) {
$name = $args['name'];
$response->getBody()->write("Hello, $name");
return $response;
});
$app->run();
这可能是一个基本问题。但我是新来的。需要帮助。
解决方案
要解决超薄4的问题,我是这样做的:
1/紧接在
之后$app = AppFactory::create();
我添加了:
$app->setBasePath("/myapp/api"); // /myapp/api is the api folder (http://domain/myapp/api)
2/在我的.htaccess中:
RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteRule ^api/(.*)$ api/index.php/$1
3/Finaly为了处理‘HttpNotFoundException’Slim异常,我添加了一个try/Catch(我不知道为什么Slim不在内部处理它,也许是为了给我们更多的可能性?)
try {
$app->run();
} catch (Exception $e) {
// We display a error message
die( json_encode(array("status" => "failed", "message" => "This action is not allowed")));
}
希望能有所帮助
**Edted=>;强制Slim处理异常,在:**
之后$app = AppFactory::create();
添加:
$app->addErrorMiddleware(true, true, true);
引用:http://www.slimframework.com/docs/v4/middleware/body-parsing.html
相关文章