打包后,修改用户头像 抛出
Can't write image data to path (phar:///www/wwwroot/webman_pack/build/webman.phar/plugin/admin/public/upload/avatar/202405/663dc6f47d0b.lg.jpg)
根据打包文档配置 https://www.workerman.net/doc/webman/others/phar.html
1.config/plugin/webman/console/app.php 配置
'exclude_pattern' => '#^(?!.*(composer.json|/.github/|/.idea/|/.git/|/.setting/|/runtime/|/vendor-bin/|/build/|vendor/webman/admin))(.*)$#'
config/app.php配置
'public_path' => base_path(false) . DIRECTORY_SEPARATOR . 'public',
1.修改插件内的上传头像源码,重新打包,再上传头像提示
删除了/plugin/admin/ 拼接
提示 Can’t write image data to path (phar:///www/wwwroot/webman_pack/webman.phar/public/upload/avatar/202405/663dd032ca59.lg.png)
2.帖子 https://www.workerman.net/q/8086 根据老大提供的方法改了,也提示上传路径有误
备注:文件给了777权限
1.照文档配置更改 https://www.workerman.net/doc/webman/others/phar.html
2.更改后台插件上传头像配置(其他上传自行测试)路径为 项目根目录/plugin/admin/app/controller/UploadController.php/avatar
/**
* 上传头像
* @param Request $request
* @return Response
* @throws Exception
*/
public function avatar(Request $request): Response
{
$file = current($request->file());
if ($file && $file->isValid()) {
$ext = strtolower($file->getUploadExtension());
if (!in_array($ext, ['jpg', 'jpeg', 'gif', 'png'])) {
return json(['code' => 2, 'msg' => '仅支持 jpg jpeg gif png格式']);
}
$image = Image::make($file);
$width = $image->width();
$height = $image->height();
$size = min($width, $height);
$relative_path = 'upload/avatar/' . date('Ym');
$real_path = "./public/$relative_path";//这个是上传路径更改
print_r($real_path);
if (!is_dir($real_path)) {
mkdir($real_path, 0777, true);
}
$name = bin2hex(pack('Nn',time(), random_int(1, 65535)));
$ext = $file->getUploadExtension();
$image->crop($size, $size)->resize(300, 300);
$path = "./public/$relative_path/$name.lg.$ext";//这个是上传路径更改
$image->save($path);
$image->resize(120, 120);
$path = "./public/$relative_path/$name.md.$ext";//这个是上传路径更改
$image->save($path);
$image->resize(60, 60);
$path = "./public/$relative_path/$name.$ext";//这个是上传路径更改
$image->save($path);
$image->resize(30, 30);
$path = "./public/$relative_path/$name.sm.$ext";//这个是上传路径更改
$image->save($path);
return json([
'code' => 0,
'msg' => '上传成功',
'data' => [
'url' => "/public/$relative_path/$name.$ext" //这个是上传后回显的路径
]
]);
}
return json(['code' => 1, 'msg' => 'file not found']);
}
1.我的打包命令为(项目根目录) php -d phar.readonly=0 ./webman build:phar
2.如果更新插件官方后台,则会覆盖当前修改的代码,切记
你试试
\Phar::running() ? pathinfo(\Phar::running(false), PATHINFO_DIRNAME) . '/public' : realpath(base_path() . '/../public');
打包后上传文件没有问题,现在是上传后回显不对,还在调试,等调试完成再更新当前文章
我这两天在做图片上传也遇到这个问题了,我是使用的use Intervention\Image\ImageManagerStatic库对图片进行压缩处理然后调用保存也出现了Intervention\Image\Exception\NotWritableException: Can't write image data to path报错,但是测试用webman的move方法保存就不会出错,保存的路径都是相同的,最后的结局方案就是,输出图片二进制数据然后用 file_put_contents保存
我之前保存失败的原因的文件夹路径不对,改了上传路径就文艺问题了