Linkstack installation fails on shared hosting & subdomain
LinkStack version
4.8.4
Description
After uploading the ZIP folder to my shared hosting webspace, I encounter the following error:
scandir(/usr/www/users/.../.../p/linkstack//assets/linkstack/images/): Failed to open directory: No such file or directory
I assumed this is because my linkstack instance does not run on the domain "root" but in a subfolder. I tried to work around that issue by creating a subdomain, making the linkstack instance accessible "like a domain root". However, also this did not change the behavior:
It looks like scandir is searching in the wrong directory:
- Incorrect: /usr/www/users/{webspace_user}/{webspace_name}/p/linkstack//assets/linkstack/images/
- correct: {subdomain.domain.de}/assets/linkstack/images/
Am I overlooking something? Thanks for your help in advance!
Best, Felix
Details about your system
PHP 8.4.11 Laravel 9.52.18
How to reproduce
- Download ZIP
- Upload to shared hosting in a subfolder
- Open subfolder in Browser
- Create subdomain + HTTPS for it
- Open subdomain in Browser
Possible Solution
I tried setting APP_URL in .env but also this did not help.
I also tried to change line 6 in app/Functions/functions.php to $_SERVER['REQUEST_URI'] or similar, but no success.
Additional Context
No response
It's because Linkstack is assuming you're not in a shared hosting environment. It's intended to be hosted in say a VPS like instance where you have full control of where you can set the directory yourself.
I've been looking at this issue for a bit now and I'm not entirely sure what's going wrong here exactly.
It's true that not all features fully work on shared hosting. I think the theme system will throw these kinds of errors depending on the host.
We added a couple of compatibility features to make some systems work, for example the updater should now work on shared hosting.
The thing is, file paths are reported by PHP, so this should normally work. I can't really see any case where the hoster wouldn't provide that information to this process.
There looks to be a double slash in the file path that would do that sort of thing, but I'd expect this to happen on other systems as well, not just shared hosting.
@felixfruehstueck Removing the redundant "/" in the findFile function should do it for you https://github.com/LinkStackOrg/LinkStack/blob/main/app/Functions/functions.php#L5