"Failed to open stream: Permission denied" for cache/data
-
S sebastienserre referenced this topic on
-
I am also going to leave this here:
I finally got around to putting together a fix:
https://github.com/pronetivity/cloudron-freescout/commit/27697c310fb373f1a972c7990f5c00dc3052ee54
A detailed analysis is available here:
https://github.com/pronetivity/cloudron-freescout/blob/master/LARAVEL-CACHE-FIX.md
Disclaimer: the commit also includes a few quality-of-life changes. The actual fix is limited to the caching adjustments.
Cheers,
JD -
I am also going to leave this here:
I finally got around to putting together a fix:
https://github.com/pronetivity/cloudron-freescout/commit/27697c310fb373f1a972c7990f5c00dc3052ee54
A detailed analysis is available here:
https://github.com/pronetivity/cloudron-freescout/blob/master/LARAVEL-CACHE-FIX.md
Disclaimer: the commit also includes a few quality-of-life changes. The actual fix is limited to the caching adjustments.
Cheers,
JD -
@neoplex thank you. Since we host on gitlab, I applied the patch by hand with only the relevant bits - https://git.cloudron.io/packages/freescout-app/-/merge_requests/61
Hey @girish, thanks for picking up the patch!
So, that one cleaned up the queue worker side of things (which was genuinely broken), but the root-owned cache files started appearing again. I've spent some more time on this and I FINALLY found the culprit ...
Turns out it's not anything inside the app container. It's the scheduler sidecar.
On the host:
$ docker ps --format '{{.Names}} {{.Command}}' | grep <app-id> <app-id>-crontab.0 "/bin/sh -c 'php /ap…" <app-id> "/app/pkg/start.sh"$ docker inspect --format '{{.Config.Cmd}}' <app-id>-crontab.0 [/bin/sh -c php /app/code/artisan schedule:run >> /dev/null 2>&1] $ docker inspect --format '{{.Config.User}}' <app-id>-crontab.0 (empty - runs as root)The sidecar runs
php artisan schedule:rundirectly as root every minute, creating scheduler mutex files and other cache entries understorage/framework/cache/data/owned byroot:root. When the app (running aswww-data) tries to write to those same directories - permission denied.Two things I noticed:
- The sidecar doesn't use the manifest's
"command": "/app/pkg/cron.sh"- which uses gosu to drop privileges - it hardcodesphp artisan schedule:runinstead - It runs without a user set, so it defaults to root
The fix from MR61 is still good to keep, but need to address the sidecar situation. For the freescout app specifically, I've now removed the
scheduleraddon and switched to running theschedule:runjob in the same container via a supervisor-managed process. That eliminates the sidecar container entirely.I've patched and tested the repo accordingly:
https://github.com/pronetivity/cloudron-freescout/commit/6771b826ee45cca6fc75d145f85d9d3da198daae
https://github.com/pronetivity/cloudron-freescout/blob/master/LARAVEL-CACHE-FIX.md
As for the scheduler sidecar - shouldn't it respect the manifest command (or run as the app user)? That would be a nicer fix at the platform level going forward.
Cheers,
JD - The sidecar doesn't use the manifest's
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login




