PHP's __DIR__ follows symlinks, so an artisan symlink at /var/lib/tide/app/artisan resolved back to the read only store path. That made every Laravel file path ultimately resolve into the store, including storage/logs/laravel.log and bootstrap/cache, which Laravel must be able to write. The redirected symlinks for those two subtrees never even got consulted because resolution happened upstream of them. Switch tide-prepare to copy the package contents into appRoot, then mount /var/lib/tide/state over storage/ and bootstrap/cache/ via symlinks out of a writable parent. Now __DIR__ resolves to the writable copy and Laravel can boot. |
||
|---|---|---|
| .. | ||
| packages | ||
| module.nix | ||