在 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-