Open jorgefm87 opened 3 years ago
π Thanks for opening your first issue here! If you're reporting a π bug, please make sure you include steps to reproduce it. We get a lot of issues on this repo, so please be patient and we will get back to you as soon as we can.
Perhaps show more of your env vars related to s3 config
Make sure you have
FILESYSTEM_DISK=s3
in your config as well
I have added FILESYSTEM_DISK and it follows the bug:
PRIVATE_FILESYSTEM_DISK=s3_private PUBLIC_FILESYSTEM_DISK=s3_public FILESYSTEM_DISK=s3
PUBLIC_AWS_SECRET_ACCESS_KEY=null PUBLIC_AWS_ACCESS_KEY_ID=null PUBLIC_AWS_DEFAULT_REGION=eu-west-1 PUBLIC_AWS_BUCKET=xxxx PUBLIC_AWS_URL=https://xxxx.s3.eu-west-1.amazonaws.com PUBLIC_AWS_BUCKET_ROOT=public
PRIVATE_AWS_ACCESS_KEY_ID=null PRIVATE_AWS_SECRET_ACCESS_KEY=null PRIVATE_AWS_DEFAULT_REGION=eu-west-1 PRIVATE_AWS_BUCKET=xxxx PRIVATE_AWS_URL=https://xxxx.s3.eu-west-1.amazonaws.com PRIVATE_AWS_BUCKET_ROOT=private
Having the same problem. I see a FIXME comment in the controller right where this happens. Is S3 support not yet complete, or is this a configuration issue? The docs aren't super clear on how to get S3 working, but I was able to use the artisan command to move files into S3, so it seems my config is at least very close to right.
The required settings are:
# --------------------------------------------
# REQUIRED: UPLOADED FILE STORAGE SETTINGS
# --------------------------------------------
PRIVATE_FILESYSTEM_DISK=s3_private
PUBLIC_FILESYSTEM_DISK=s3_public
# --------------------------------------------
# PUBLIC S3 Settings
# --------------------------------------------
PUBLIC_AWS_SECRET_ACCESS_KEY='XXXXXXXX'
PUBLIC_AWS_ACCESS_KEY_ID=XXXXXXXX
PUBLIC_AWS_DEFAULT_REGION='us-west-2'
PUBLIC_AWS_BUCKET=snipe-flysystem-public-test
PUBLIC_AWS_URL='https:/XXXXXXXXXt.s3-us-west-2.amazonaws.com/'
# --------------------------------------------
# PRIVATE S3 Settings
# --------------------------------------------
PRIVATE_AWS_SECRET_ACCESS_KEY='XXXXXXXXXX'
PRIVATE_AWS_ACCESS_KEY_ID=XXXXXXXXX
PRIVATE_AWS_DEFAULT_REGION='us-west-2'
PRIVATE_AWS_BUCKET=snipe-flysystem-private-test
(The bucket name obviously changes based on your own setup)
Yep, that's exactly what I had, and like I said artisan was able to push the documents there. But when I removed them from the local filesystem, they could no longer be viewed through the UI, the path it was generating for them in UserFilesController::show
was still /var/www/...., nothing related to AWS at all.
P.S. There doesn't seem to be any rhyme or reason to which settings need quotes around them and which don't? null
shouldn't be quoted, obviously, and I get why numbers might not be (I'm a PHP developer myself), but why does the region have quotes in your example but not the bucket?
snipe/snipe-it:v6.0.14 - docker version and the issue still exists, the same problem. The file (signature) is saved in s3 but not shown in UI
STACK TRACE:
`[2023-02-14 13:48:45] production.ERROR: Call to undefined method Monolog\Logger::warn() {"userId":1,"exception":"[object] (Error(code: 0): Call to undefined method Monolog\Logger::warn() at /var/www/html/vendor/laravel/framework/src/Illuminate/Log/Logger.php:308) [stacktrace]
"}`
Hello @snipe
I've the same issue, I think they is 2 separated issues; The first one is an error about the warning methods name cc my patch.
But after that still not work, this function manage only local files. I guess it's suppose to have a case with config("filesystems.disks.$disk.driver")
for redirect the link to the s3 bucket location, but I don't know how.
Do you want I create a PR with my first patch ?
Edit: It's work when I force the s3 (patch):
$file = 'private_uploads/signatures/'.$filename;
$disk = config('filesystems.default');
return redirect()->away(Storage::disk($disk)->temporaryUrl($file, now()->addMinutes(5)));
Debug mode
Describe the bug
When saving files in S3, private files then can't be found because the code tries to load them from local.
Reproduction steps
PRIVATE_FILESYSTEM_DISK=s3_private PUBLIC_FILESYSTEM_DISK=s3_public
User sign Asset delivery confirmation
The file (signature) is saved in s3
[2021-09-17 16:03:27] production.ERROR: file_get_contents(/var/www/snipeit/storage/private_uploads/signatures/siglog-aacb5585-80b0-4b46-a91b-93585e79aaf3-2021-09-17-032031.png): failed to open stream: No such file or directory
Expected behavior
I expect the files hosted in s3 to be showed.
Screenshots
Snipe-IT Version
v5.2.0 - build 6339 (master)
Operating System
Ubuntu
Web Server
Apache
PHP Version
PHP 7.4.23
Operating System
No response
Browser
No response
Version
No response
Device
No response
Operating System
No response
Browser
No response
Version
No response
Error messages
No response
Additional context
No response