在 imi 框架里使用 curl 函数,比如curl_init
,会提示 Call to undefined function ImiAppApiServerControllercurl_init()
:
2021-03-25 23:30:34 [error] Call to undefined function ImiAppApiServerControllercurl_init()
#0 ImiAppApiServerControllerIndexController->testapi() called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/Middleware/ActionMiddleware.php:94]
#1 ImiServerHttpMiddlewareActionMiddleware->process(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/RequestHandler.php:54]
#2 ImiServerHttpRequestHandler->handle(object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/Middleware/ActionWrapMiddleware.php:41]
#3 ImiServerHttpMiddlewareActionWrapMiddleware->process(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/RequestHandler.php:54]
#4 ImiServerHttpRequestHandler->handle(object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/Middleware/RouteMiddleware.php:57]
#5 ImiServerHttpMiddlewareRouteMiddleware->process(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/RequestHandler.php:54]
#6 ImiServerHttpRequestHandler->handle(object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Session/Middleware/HttpSessionMiddleware.php:44]
#7 ImiServerSessionMiddlewareHttpSessionMiddleware->process(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/RequestHandler.php:54]
#8 ImiServerHttpRequestHandler->handle(object) called at [/data/project/www/imi-project-http/ApiServer/Middleware/PoweredBy.php:20]
#9 ImiAppApiServerMiddlewarePoweredBy->process(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/RequestHandler.php:54]
#10 ImiServerHttpRequestHandler->handle(object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/Dispatcher.php:32]
#11 ImiServerHttpDispatcher->dispatch(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/Listener/BeforeRequest.php:36]
#12 ImiServerHttpListenerBeforeRequest->handle(object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Event/TEvent.php:144]
#13 ImiServerBase->trigger(request, array, object, ImiServerEventParamRequestEventParam) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/Server.php:154]
接着在项目里安装了 yurunsoft/yurun-http
:
composer require yurunsoft/yurun-http
使用 yurun-http 里的方法进行 get/post 请求:
$http = HttpRequest::newSession();
$res = $http->get('http://127.0.0.1:8000/api/apitest?id=555');
return $res->json();
此时再通过 imi 框架进行测试,仍旧报错 “Class 'YurunUtilHttpRequest' not found”。
2021-03-25 23:34:23 [error] Class 'YurunUtilHttpRequest' not found
#0 ImiAppApiServerControllerIndexController->testapi() called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/Middleware/ActionMiddleware.php:94]
#1 ImiServerHttpMiddlewareActionMiddleware->process(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/RequestHandler.php:54]
#2 ImiServerHttpRequestHandler->handle(object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/Middleware/ActionWrapMiddleware.php:41]
#3 ImiServerHttpMiddlewareActionWrapMiddleware->process(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/RequestHandler.php:54]
#4 ImiServerHttpRequestHandler->handle(object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/Middleware/RouteMiddleware.php:57]
#5 ImiServerHttpMiddlewareRouteMiddleware->process(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/RequestHandler.php:54]
#6 ImiServerHttpRequestHandler->handle(object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Session/Middleware/HttpSessionMiddleware.php:44]
#7 ImiServerSessionMiddlewareHttpSessionMiddleware->process(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/RequestHandler.php:54]
#8 ImiServerHttpRequestHandler->handle(object) called at [/data/project/www/imi-project-http/ApiServer/Middleware/PoweredBy.php:20]
#9 ImiAppApiServerMiddlewarePoweredBy->process(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/RequestHandler.php:54]
#10 ImiServerHttpRequestHandler->handle(object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/Dispatcher.php:32]
#11 ImiServerHttpDispatcher->dispatch(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/Listener/BeforeRequest.php:36]
#12 ImiServerHttpListenerBeforeRequest->handle(object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Event/TEvent.php:144]
#13 ImiServerBase->trigger(request, array, object, ImiServerEventParamRequestEventParam) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/Server.php:154]
重新启动 imi 后台进程,即可使用 HttpRequest
类来进行 http 请求!
PS
imi 框架的日志配置在 config/beans.php
:
'Logger' => [
'exHandlers' => [
// info 级别日志不输出trace
[
'class' => ImiLogHandlerFile::class,
'options' => [
'levels' => [LogLevel::INFO],
'fileName' => dirname(__DIR__) . '/.runtime/logs/{Y}-{m}-{d}.log',
'format' => "{Y}-{m}-{d} {H}:{i}:{s} [{level}] {message}",
],
],
// 指定级别日志输出trace
[
'class' => ImiLogHandlerFile::class,
'options' => [
'levels' => [
LogLevel::ALERT,
LogLevel::CRITICAL,
LogLevel::DEBUG,
LogLevel::EMERGENCY,
LogLevel::ERROR,
LogLevel::NOTICE,
LogLevel::WARNING,
],
'fileName' => dirname(__DIR__) . '/.runtime/logs/{Y}-{m}-{d}.log',
'format' => "{Y}-{m}-{d} {H}:{i}:{s} [{level}] {message}
{trace}",
'traceFormat' => '#{index} {call} called at [{file}:{line}]',
'traceMinimum' => true,
],
]
],
],
-EOF-