I am afraid I already tried that. I am fairly sure the issue is using bindfs to translate the permissions.
See here is the bindfs parsed mount from my home directory:
~/tools/see-sites/shop$ ll
total 1124
drwxrwsr-x 16 jonathan sambashare 4096 Mar 24 21:51 ./
drwxrwsr-x 16 jonathan sambashare 4096 Mar 23 11:47 ../
drwxrwsr-x 6 jonathan sambashare 4096 Mar 23 11:47 app/
-rw-rw-r-- 1 jonathan sambashare 1686 Mar 23 11:47 artisan
drwxrwsr-x 3 jonathan sambashare 4096 Mar 23 11:47 bootstrap/
drwxrwsr-x 3 jonathan sambashare 4096 Jan 14 21:42 cgi-bin/
-rw-rw-r-- 1 jonathan sambashare 1477 Mar 23 11:47 composer.json
-rw-rw-r-- 1 jonathan sambashare 143703 Mar 23 11:47 composer.lock
drwxrwsr-x 2 jonathan sambashare 4096 Mar 23 11:47 config/
drwxrwsr-x 5 jonathan sambashare 4096 Mar 23 11:47 database/
-rw-rw-r-- 1 jonathan sambashare 702 Mar 23 11:47 .env
-rw-rw-r-- 1 jonathan sambashare 651 Mar 23 11:47 .env.example
-rw-rw-r-- 1 jonathan sambashare 111 Mar 23 11:47 .gitattributes
-rw-rw-r-- 1 jonathan sambashare 155 Mar 23 11:47 .gitignore
drwxrwsr-x 2 jonathan sambashare 4096 Jan 14 21:43 logs/
drwxrwsr-x 985 jonathan sambashare 36864 Mar 24 21:48 node_modules/
-rw-rw-r-- 1 jonathan sambashare 1022 Mar 23 16:15 package.json
-rw-rw-r-- 1 jonathan sambashare 598996 Mar 23 11:58 package-lock.json
-rw-rw-r-- 1 jonathan sambashare 1088 Mar 23 11:47 phpunit.xml
drwxrwsr-x 5 jonathan sambashare 4096 Mar 23 21:38 public/
drwxrwsr-x 5 jonathan sambashare 4096 Mar 23 11:47 resources/
drwxrwsr-x 2 jonathan sambashare 4096 Mar 23 11:47 routes/
drwxrwsr-x 3 jonathan sambashare 4096 Mar 24 17:18 .sass-cache/
-rw-rw-r-- 1 jonathan sambashare 563 Mar 23 11:47 server.php
drwxrwsr-x 5 jonathan sambashare 4096 Mar 23 11:47 storage/
drwxrwsr-x 4 jonathan sambashare 4096 Mar 23 11:47 tests/
drwxrwsr-x 37 jonathan sambashare 4096 Mar 23 11:47 vendor/
-rw-rw-r-- 1 jonathan sambashare 549 Mar 23 11:47 webpack.mix.js
-rw-rw-r-- 1 jonathan sambashare 257695 Mar 23 11:47 yarn.lock
You can see the permissions appear okay...(the sticky group is for Windows workstations access).
Now here are the real permissions when accessed absolute from root which is how Apache sees it:
$ ll /home/sites/shop
total 1124
drwxrwsr-x 16 www-data sambashare 4096 Mar 24 21:51 ./
drwxrwsr-x 16 www-data sambashare 4096 Mar 23 11:47 ../
drwxrwsr-x 6 www-data sambashare 4096 Mar 23 11:47 app/
-rw-rw-r-- 1 www-data sambashare 1686 Mar 23 11:47 artisan
drwxrwsr-x 3 www-data sambashare 4096 Mar 23 11:47 bootstrap/
drwxrwsr-x 3 www-data sambashare 4096 Jan 14 21:42 cgi-bin/
-rw-rw-r-- 1 www-data sambashare 1477 Mar 23 11:47 composer.json
-rw-rw-r-- 1 www-data sambashare 143703 Mar 23 11:47 composer.lock
drwxrwsr-x 2 www-data sambashare 4096 Mar 23 11:47 config/
drwxrwsr-x 5 www-data sambashare 4096 Mar 23 11:47 database/
-rw-rw-r-- 1 www-data sambashare 702 Mar 23 11:47 .env
-rw-rw-r-- 1 www-data sambashare 651 Mar 23 11:47 .env.example
-rw-rw-r-- 1 www-data sambashare 111 Mar 23 11:47 .gitattributes
-rw-rw-r-- 1 www-data sambashare 155 Mar 23 11:47 .gitignore
drwxrwsr-x 2 www-data sambashare 4096 Jan 14 21:43 logs/
drwxrwsr-x 985 www-data sambashare 36864 Mar 24 21:48 node_modules/
-rw-rw-r-- 1 www-data sambashare 1022 Mar 23 16:15 package.json
-rw-rw-r-- 1 www-data sambashare 598996 Mar 23 11:58 package-lock.json
-rw-rw-r-- 1 www-data sambashare 1088 Mar 23 11:47 phpunit.xml
drwxrwsr-x 5 www-data sambashare 4096 Mar 23 21:38 public/
drwxrwsr-x 5 www-data sambashare 4096 Mar 23 11:47 resources/
drwxrwsr-x 2 www-data sambashare 4096 Mar 23 11:47 routes/
drwxrwsr-x 3 www-data sambashare 4096 Mar 24 17:18 .sass-cache/
-rw-rw-r-- 1 www-data sambashare 563 Mar 23 11:47 server.php
drwxrwsr-x 5 www-data sambashare 4096 Mar 23 11:47 storage/
drwxrwsr-x 4 www-data sambashare 4096 Mar 23 11:47 tests/
drwxrwsr-x 37 www-data sambashare 4096 Mar 23 11:47 vendor/
-rw-rw-r-- 1 www-data sambashare 549 Mar 23 11:47 webpack.mix.js
-rw-rw-r-- 1 www-data sambashare 257695 Mar 23 11:47 yarn.lock
I am fairly sure is the bindfs mount that is my issue. If I just spin up inside my profile it works, but then Apache cannot load it, nor any other users access it.
bindfs worked great in the past because I could give team access where the files would be served with their credentials yet maintain Apache's ownership.
I can use sass to update the app.css. I guess I will just forego the app.js and just link manually any custom scripts. Or manually minify them then concatenate before deploying to production.