这里实现了一个文件上传接口,限制了文件mime为js和jsx,但是可以上传其他格式的文件,上传js或jsx文件时报错,而且只有上传js或jsx的时候会报这个错误
具体报错内容贴下面了
public function widgetFile(Request $request): Response
{
try {
$file = $request->file('file');
try {
$v = v::file()
->size(null, '20MB')
->oneOf(
v::mimetype('application/javascript')->setName('file'),
v::mimetype('text/jsx')->setName('file')
);
$v->validate($file);
} catch (ValidationException $e) {
return badRequest('只允许上传大小不超过50MB的js或jsx文件');
}
if (!$file->isReadable()) {
return badRequest('文件资源无效');
}
$path = $this->uploadToCdn($file->getUploadExtension(), $file->openFile());
if (empty($path)) return badRequest('上传失败,请稍后重试');
return success(['url' => $path]);
} catch (Exception $e) {
Log::error($e->getMessage(), ['message' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine(), 'code' => $e->getCode(), 'trace' => $e->getTrace()]);
return serverError();
}
}
RuntimeException: Cannot read from file C:\Users\fish\AppData\Local\Temp\wor622D.tmp in
F:\cocotais\creation-project\backend-php\vendor\monolog\monolog\src\Monolog\Formatter\NormalizerFormatter.php:182<br />
Stack trace:<br />
#0 F:\cocotais\creation-project\backend-php\vendor\monolog\monolog\src\Monolog\Formatter\NormalizerFormatter.php(182): SplFileObject->__toString()<br />
#1 F:\cocotais\creation-project\backend-php\vendor\monolog\monolog\src\Monolog\Formatter\NormalizerFormatter.php(159): Monolog\Formatter\NormalizerFormatter->normalize(Object(SplFileObject), 5)<br />
#2 F:\cocotais\creation-project\backend-php\vendor\monolog\monolog\src\Monolog\Formatter\NormalizerFormatter.php(159): Monolog\Formatter\NormalizerFormatter->normalize(Array, 4)<br />
#3 F:\cocotais\creation-project\backend-php\vendor\monolog\monolog\src\Monolog\Formatter\NormalizerFormatter.php(159): Monolog\Formatter\NormalizerFormatter->normalize(Array, 3)<br />
#4 F:\cocotais\creation-project\backend-php\vendor\monolog\monolog\src\Monolog\Formatter\NormalizerFormatter.php(159): Monolog\Formatter\NormalizerFormatter->normalize(Array, 2)<br />
#5 F:\cocotais\creation-project\backend-php\vendor\monolog\monolog\src\Monolog\Formatter\NormalizerFormatter.php(159): Monolog\Formatter\NormalizerFormatter->normalize(Array, 1)<br />
#6 F:\cocotais\creation-project\backend-php\vendor\monolog\monolog\src\Monolog\Formatter\NormalizerFormatter.php(55): Monolog\Formatter\NormalizerFormatter->normalize(Array)<br />
#7 F:\cocotais\creation-project\backend-php\vendor\monolog\monolog\src\Monolog\Formatter\LineFormatter.php(84): Monolog\Formatter\NormalizerFormatter->format(Array)<br />
#8 F:\cocotais\creation-project\backend-php\vendor\monolog\monolog\src\Monolog\Handler\AbstractProcessingHandler.php(46): Monolog\Formatter\LineFormatter->format(Array)<br />
#9 F:\cocotais\creation-project\backend-php\vendor\monolog\monolog\src\Monolog\Logger.php(400): Monolog\Handler\AbstractProcessingHandler->handle(Array)<br />
#10 F:\cocotais\creation-project\backend-php\vendor\monolog\monolog\src\Monolog\Logger.php(651): Monolog\Logger->addRecord(400, '\xE6\x96\x87\xE4\xBB\xB6\xE4\xB8\x8A\xE4\xBC\xA0\xE5\xA4\xB1...', Array)<br />
#11 F:\cocotais\creation-project\backend-php\vendor\workerman\webman-framework\src\support\Log.php(137): Monolog\Logger->error('\xE6\x96\x87\xE4\xBB\xB6\xE4\xB8\x8A\xE4\xBC\xA0\xE5\xA4\xB1...', Array)<br />
#12 F:\cocotais\creation-project\backend-php\app\controller\FileController.php(66): support\Log::__callStatic('error', Array)<br />
#13 F:\cocotais\creation-project\backend-php\vendor\workerman\webman-framework\src\App.php(335): app\controller\FileController->widgetFile(Object(support\Request))<br />
#14 F:\cocotais\creation-project\backend-php\vendor\workerman\webman-framework\src\App.php(358): Webman\App::Webman\{closure}(Object(support\Request))<br />
#15 F:\cocotais\creation-project\backend-php\vendor\webman\rate-limiter\src\Limiter.php(109): Webman\App::Webman\{closure}(Object(support\Request))<br />
#16 F:\cocotais\creation-project\backend-php\vendor\workerman\webman-framework\src\App.php(351): Webman\RateLimiter\Limiter->process(Object(support\Request), Object(Closure))<br />
#17 F:\cocotais\creation-project\backend-php\vendor\workerman\webman-framework\src\App.php(148): Webman\App::Webman\{closure}(Object(support\Request))<br />
#18 F:\cocotais\creation-project\backend-php\vendor\workerman\workerman\src\Connection\TcpConnection.php(749): Webman\App->onMessage(Object(Workerman\Connection\TcpConnection), Object(support\Request))<br />
#19 F:\cocotais\creation-project\backend-php\vendor\workerman\workerman\src\Events\Select.php(400): Workerman\Connection\TcpConnection->baseRead(Resource id #260)<br />
#20 F:\cocotais\creation-project\backend-php\vendor\workerman\workerman\src\Worker.php(1594): Workerman\Events\Select->run()<br />
#21 F:\cocotais\creation-project\backend-php\vendor\workerman\workerman\src\Worker.php(1519): Workerman\Worker::forkWorkersForWindows()<br />
#22 F:\cocotais\creation-project\backend-php\vendor\workerman\workerman\src\Worker.php(585): Workerman\Worker::forkWorkers()<br />
#23 F:\cocotais\creation-project\backend-php\runtime\windows\start_webman.php(33): Workerman\Worker::runAll()<br />
#24 {main}
Workerman/5.0.1
PHP/8.2.27 (Jit off)
Windows NT/10.0
你要自己定位具体是widgetFile里哪一行代码抛出的异常
感觉日志库好像有点问题,把日志哪一行删掉就没有那个报错了
如果其它后缀文件没问题,只有js jsx有问题,可能是触发了操作系统什么安全机制,认为是有害文件,不允许读取。
关闭杀毒获取操作系统安全中心试下吧
看标题解决了,那么是什么问题导致的呢?