YunoHost-Apps / pixelfed_ynh

The federated image shareing service Pixelfed for YunoHost
https://pixelfed.org/
GNU Affero General Public License v3.0
44 stars 15 forks source link

Can't upload most pictures #118

Closed ImaCrea closed 4 years ago

ImaCrea commented 4 years ago

Hi dear YH contributors, I am super pleased to be able to play with Pixelfed thanks to you!

I am not sure this issue should be here or on Pixelfed's so in doubt I start here. Hope you don't mind ^^

Describe the bug

Versions

lapineige commented 4 years ago

First of all, thank you for the detailed bug report :) 👍

Could you check your pixelfed configuration (via the command line cat /var/www/pixelfed/.env or graphically here : yourpixelfeddomain.tld/i/admin/settings/config) to see what is the value of MAX_PHOTO_SIZE ? If the limit is too low for your image, Pixelfed has this behavior, non-precise error message at the end of the upload (yeah I know, very bad UX, it should at least check before any upload and give your a better error message) and fails.

ImaCrea commented 4 years ago

Hello, thank you for your reply. Yes I checked that already.

On my .env it says :

MAX_ACCOUNT_SIZE=1000000
MAX_PHOTO_SIZE=15000

I guess 15000 means 15Mb, right? Thing is, the pic I tried to upload are around 3~5Mb. So :/

ImaCrea commented 4 years ago

Ok, so I just understood how I get to the log file of pixelfed (/var/www/pixelfed/storage/logs) and here's what I get :

[2020-09-27 15:02:54] production.ERROR: The "" file does not exist or is not readable. {"userId":1,"exception":"[object] (Symfony\\Component\\Mime\\Exception\\InvalidArgumentException(code: 0): The \"\" file does not exist or is not readable. at /var/www/pixelfed/vendor/symfony/mime/FileinfoMimeTypeGuesser.php:50)
[stacktrace]
#0 /var/www/pixelfed/vendor/symfony/mime/MimeTypes.php(134): Symfony\\Component\\Mime\\FileinfoMimeTypeGuesser->guessMimeType('')
#1 /var/www/pixelfed/vendor/symfony/http-foundation/File/File.php(73): Symfony\\Component\\Mime\\MimeTypes->guessMimeType('')
#2 /var/www/pixelfed/app/Http/Controllers/Api/BaseApiController.php(244): Symfony\\Component\\HttpFoundation\\File\\File->getMimeType()
#3 [internal function]: App\\Http\\Controllers\\Api\\BaseApiController->uploadMedia(Object(Illuminate\\Http\\Request))
#4 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): call_user_func_array(Array, Array)
#5 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction('uploadMedia', Array)
#6 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Routing/Route.php(219): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(App\\Http\\Controllers\\ApiController), 'uploadMedia')
#7 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Routing/Route.php(176): Illuminate\\Routing\\Route->runController()
#8 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Routing/Router.php(681): Illuminate\\Routing\\Route->run()
#9 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(130): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#10 /var/www/pixelfed/app/Http/Middleware/Localization.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#11 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): App\\Http\\Middleware\\Localization->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#12 /var/www/pixelfed/app/Http/Middleware/TwoFactorAuth.php(33): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#13 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): App\\Http\\Middleware\\TwoFactorAuth->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#14 /var/www/pixelfed/app/Http/Middleware/EmailVerificationCheck.php(33): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#15 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): App\\Http\\Middleware\\EmailVerificationCheck->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#16 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#17 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#18 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(76): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#19 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#20 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#21 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#22 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(56): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#23 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\\Session\\Middleware\\StartSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#24 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#25 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#26 /var/www/pixelfed/app/Http/Middleware/FrameGuard.php(18): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#27 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): App\\Http\\Middleware\\FrameGuard->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#28 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(66): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#29 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#30 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(105): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#31 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Routing/Router.php(683): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#32 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Routing/Router.php(658): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
#33 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Routing/Router.php(624): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
#34 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Routing/Router.php(613): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
#35 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(177): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
#36 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(130): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
#37 /var/www/pixelfed/vendor/fideloper/proxy/src/TrustProxies.php(57): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#38 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Fideloper\\Proxy\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#39 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#40 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#41 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#42 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#43 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#44 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#45 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(62): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#46 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#47 /var/www/pixelfed/vendor/barryvdh/laravel-cors/src/HandlePreflight.php(29): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#48 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(171): Barryvdh\\Cors\\HandlePreflight->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#49 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(105): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#50 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(152): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#51 /var/www/pixelfed/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(117): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
#52 /var/www/pixelfed/public/index.php(53): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
#53 {main}
"} 

I don't have any idea how to interpret that. Got any idea maybe?

lapineige commented 4 years ago

I have no idea… I wonder if we should ask (via a bug report ?) Pixelfed team ?

ImaCrea commented 4 years ago

I see. No worries, I can take care of it when I have a moment.

ImaCrea commented 4 years ago

ah one second @lapineige I might have found a fix. I spoke on Pixelfed's IRC.

Here's what they told me:

look at https://docs.pixelfed.org/install-guides/arch.html#preparing-a-machine: Edit `/etc/php/php.ini`: Edit the following lines to your desired upload limits: `post_max_size = 8M` ; `upload_max_filesize = 2M` ; `max_file_uploads = 20`

So in our case the file is /etc/php/7.2/fpm/php/ini so I edited the limits to 20M for post_max_size and upload_max_filesize and... now it's working ! happy yay!

ImaCrea commented 4 years ago

But I have to say this wasn't easy at all. Maybe that need an update to the package to make sure at least php.ini is set with a 15M limit to have it coherent with pixelfed's conf? And a quick explanation in the readme for whoever wants to change that limits?

lapineige commented 4 years ago

Oh yeah, I forgot this one, indeed it could have been php limit and not Pixelfed one…

Strangely your use php 7.2, but it should be 7.3 for pixelfed 🤔

Maybe that need an update to the package to make sure at least php.ini is set with a 15M limit to have it coherent with pixelfed's conf? And a quick explanation in the readme for whoever wants to change that limits?

Very good point, we should explain that in the readme, and maybe set a different php limit (at least to fit Pixelfed standard one). But are complementary, as setting a good php default value won't resolve the issue if people try to change that value...

ImaCrea commented 4 years ago

btw I see 7.3 for php now so don't worry on that side ;)