webman 使用swoole协程 log创建目录报错

lsmir2

问题描述

报错日志

UnexpectedValueException: There is no existing directory at "/app/runtime/logs/admin" and it could not be created: Invalid argument in /app/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:251
Stack trace:
#0 /app/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php(141): Monolog\Handler\StreamHandler->createDir('/app/runtime/lo...')
#1 /app/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php(126): Monolog\Handler\StreamHandler->write(Array)
#2 /app/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(48): Monolog\Handler\RotatingFileHandler->write(Array)
#3 /app/vendor/monolog/monolog/src/Monolog/Logger.php(400): Monolog\Handler\AbstractProcessingHandler->handle(Array)
#4 /app/vendor/monolog/monolog/src/Monolog/Logger.php(612): Monolog\Logger->addRecord(200, '\xE7\xAE\xA1\xE7\x90\x86\xE5\x91\x98 supAd...', Array)
#5 /app/app/admin/controller/OrdersController.php(201): Monolog\Logger->info('\xE7\xAE\xA1\xE7\x90\x86\xE5\x91\x98 supAd...', Array)
#6 /app/vendor/workerman/webman-framework/src/App.php(336): app\admin\controller\OrdersController->Notify(Object(support\Request))
#7 /app/vendor/workerman/webman-framework/src/App.php(359): Webman\App::Webman\{closure}(Object(support\Request))
#8 /app/app/admin/middleware/Auth.php(34): Webman\App::Webman\{closure}(Object(support\Request))
#9 /app/vendor/workerman/webman-framework/src/App.php(352): app\admin\middleware\Auth->process(Object(support\Request), Object(Closure))
#10 /app/vendor/webman/log/src/Middleware.php(97): Webman\App::Webman\{closure}(Object(support\Request))
#11 /app/vendor/workerman/webman-framework/src/App.php(352): Webman\Log\Middleware->process(Object(support\Request), Object(Closure))
#12 /app/vendor/workerman/webman-framework/src/App.php(663): Webman\App::Webman\{closure}(Object(support\Request))
#13 /app/vendor/workerman/webman-framework/src/App.php(158): Webman\App::findRoute(Object(Workerman\Connection\TcpConnection), '/admin/orders/N...', 'POST/admin/orde...', Object(support\Request), 200)
#14 /app/vendor/workerman/workerman/src/Connection/TcpConnection.php(753): Webman\App->onMessage(Object(Workerman\Connection\TcpConnection), Object(support\Request))
#15 /app/vendor/workerman/workerman/src/Events/Swoole.php(288): Workerman\Connection\TcpConnection->baseRead(Resource id #371)
#16 [internal function]: Workerman\Events\Swoole->Workerman\Events\{closure}()
#17 {main}

使用 Workerman\Events\Fiber::class 后目录正常创建

程序代码或配置

webman/config/process.php

    'eventLoop' => Workerman\Events\Swoole::class,

操作系统环境及workerman/webman等具体版本

Workerman/5.1.1
PHP/8.3.21 (Jit off)
Linux/5.10.134-18.al8.x86_64
docker
144 4 0
4个回答

可能是 swoole和 Monolog有兼容问题,这个这边没办法解决

  • 暂无评论
轻云蔽月

看起来像是io_uring引起的问题,编译的时候有开启io_uring特性吗?

  • lsmir2 2天前

    docker 的swoole 扩展是通过https://github.com/mlocati/docker-php-extension-installer 进行安装的.
    docker 编排 使用了
    security_opt:

  • 轻云蔽月 1天前

    php --ri swoole看看

轻云蔽月

本地复现没问题,要检查一下服务器linux的内核版本和容器内核版本看看

  • 暂无评论
轻云蔽月

AliOS是为嵌入式设备和物联网场景设计的轻量级操作系统,可能有些关于io_uring的功能被剔除掉了

  • 暂无评论
×
🔝