swoole imi 框架无法使用 curl 的问题

在 imi 框架里使用 curl 函数,比如curl_init,会提示 Call to undefined function ImiApp\ApiServer\Controller\curl_init()

2021-03-25 23:30:34 [error] Call to undefined function ImiApp\ApiServer\Controller\curl_init()
#0  ImiApp\ApiServer\Controller\IndexController->testapi() called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/Middleware/ActionMiddleware.php:94]
#1  Imi\Server\Http\Middleware\ActionMiddleware->process(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/RequestHandler.php:54]
#2  Imi\Server\Http\RequestHandler->handle(object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/Middleware/ActionWrapMiddleware.php:41]
#3  Imi\Server\Http\Middleware\ActionWrapMiddleware->process(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/RequestHandler.php:54]
#4  Imi\Server\Http\RequestHandler->handle(object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/Middleware/RouteMiddleware.php:57]
#5  Imi\Server\Http\Middleware\RouteMiddleware->process(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/RequestHandler.php:54]
#6  Imi\Server\Http\RequestHandler->handle(object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Session/Middleware/HttpSessionMiddleware.php:44]
#7  Imi\Server\Session\Middleware\HttpSessionMiddleware->process(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/RequestHandler.php:54]
#8  Imi\Server\Http\RequestHandler->handle(object) called at [/data/project/www/imi-project-http/ApiServer/Middleware/PoweredBy.php:20]
#9  ImiApp\ApiServer\Middleware\PoweredBy->process(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/RequestHandler.php:54]
#10  Imi\Server\Http\RequestHandler->handle(object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/Dispatcher.php:32]
#11  Imi\Server\Http\Dispatcher->dispatch(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/Listener/BeforeRequest.php:36]
#12  Imi\Server\Http\Listener\BeforeRequest->handle(object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Event/TEvent.php:144]
#13  Imi\Server\Base->trigger(request, array, object, Imi\Server\Event\Param\RequestEventParam) 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 'Yurun\Util\HttpRequest' not found”。

2021-03-25 23:34:23 [error] Class 'Yurun\Util\HttpRequest' not found
#0  ImiApp\ApiServer\Controller\IndexController->testapi() called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/Middleware/ActionMiddleware.php:94]
#1  Imi\Server\Http\Middleware\ActionMiddleware->process(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/RequestHandler.php:54]
#2  Imi\Server\Http\RequestHandler->handle(object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/Middleware/ActionWrapMiddleware.php:41]
#3  Imi\Server\Http\Middleware\ActionWrapMiddleware->process(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/RequestHandler.php:54]
#4  Imi\Server\Http\RequestHandler->handle(object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/Middleware/RouteMiddleware.php:57]
#5  Imi\Server\Http\Middleware\RouteMiddleware->process(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/RequestHandler.php:54]
#6  Imi\Server\Http\RequestHandler->handle(object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Session/Middleware/HttpSessionMiddleware.php:44]
#7  Imi\Server\Session\Middleware\HttpSessionMiddleware->process(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/RequestHandler.php:54]
#8  Imi\Server\Http\RequestHandler->handle(object) called at [/data/project/www/imi-project-http/ApiServer/Middleware/PoweredBy.php:20]
#9  ImiApp\ApiServer\Middleware\PoweredBy->process(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/RequestHandler.php:54]
#10  Imi\Server\Http\RequestHandler->handle(object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/Dispatcher.php:32]
#11  Imi\Server\Http\Dispatcher->dispatch(object, object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Server/Http/Listener/BeforeRequest.php:36]
#12  Imi\Server\Http\Listener\BeforeRequest->handle(object) called at [/data/project/www/imi-project-http/vendor/yurunsoft/imi/src/Event/TEvent.php:144]
#13  Imi\Server\Base->trigger(request, array, object, Imi\Server\Event\Param\RequestEventParam) 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'        =>    \Imi\Log\Handler\File::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'        =>    \Imi\Log\Handler\File::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}\n{trace}",
                    'traceFormat'   => '#{index}  {call} called at [{file}:{line}]',
                    'traceMinimum'  =>  true,
                ],
            ]
        ],
    ],

-EOF-

posted @ 2021-03-26 00:06  imzhi  阅读(233)  评论(0编辑  收藏  举报