報(bào)錯(cuò)日志
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 后目錄正常創(chuàng)建
webman/config/process.php
'eventLoop' => Workerman\Events\Swoole::class,
Workerman/5.1.1
PHP/8.3.21 (Jit off)
Linux/5.10.134-18.al8.x86_64
docker
看起來(lái)像是io_uring引起的問(wèn)題,編譯的時(shí)候有開(kāi)啟io_uring特性嗎?
docker 的swoole 擴(kuò)展是通過(guò)https://github.com/mlocati/docker-php-extension-installer 進(jìn)行安裝的.
docker 編排 使用了
security_opt:
docker exec -it webman-app php --ri swoole
swoole
Swoole => enabled
Author => Swoole Team <team@swoole.com>
Version => 6.0.2
Built => May 15 2025 22:08:22
coroutine => enabled with boost asm context
epoll => enabled
eventfd => enabled
signalfd => enabled
cpu_affinity => enabled
spinlock => enabled
rwlock => enabled
openssl => OpenSSL 3.3.3 11 Feb 2025
dtls => enabled
http2 => enabled
json => enabled
curl-native => enabled
curl-version => 8.12.1
c-ares => 1.33.1
zlib => 1.3.1
brotli => E16781312/D16781312
zstd => 1.5.6
mutex_timedlock => enabled
pthread_barrier => enabled
futex => enabled
mysqlnd => enabled
coroutine_pgsql => enabled
coroutine_sqlite => enabled
io_uring => enabled
Directive => Local Value => Master Value
swoole.enable_library => On => On
swoole.enable_fiber_mock => Off => Off
swoole.enable_preemptive_scheduler => Off => Off
swoole.display_errors => On => On
swoole.use_shortname => On => On
swoole.unixsock_buffer_size => 8388608 => 8388608
試試編譯的時(shí)候不設(shè)置--enable-iouring吧,這個(gè)操作系統(tǒng)估計(jì)不支持io_uring,看看內(nèi)核版本先
操作系統(tǒng)支持 io_uring
[root@zzz ~]# zcat /proc/config.gz | grep CONFIG_IO_URING
CONFIG_IO_URING=y
[root@zzz ~]# uname -r
5.10.134-18.al8.x86_64
本地復(fù)現(xiàn)沒(méi)問(wèn)題,要檢查一下服務(wù)器linux的內(nèi)核版本和容器內(nèi)核版本看看
AliOS是為嵌入式設(shè)備和物聯(lián)網(wǎng)場(chǎng)景設(shè)計(jì)的輕量級(jí)操作系統(tǒng),可能有些關(guān)于io_uring的功能被剔除掉了