Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

elo's avatar
Level 3

Laravel Image upload not displaying

I have deployed a laravel application which is using the Nova admin for backend management on Bluehost VPS account. I have creates a symlink between storage and public as recommend in the laravel documentation.

I have set up a resource for uploading images like so

Avatar::make('Image')->onlyOnIndex(),

Image::make('Image')->disk('public')
->path('item-category')->required()->hideFromIndex()

I am using the public disk for storage with the filesystem disk configuration like so

'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ],

On my local system, I am able to see the actual image displayed but on the staging the image is uploaded successfully but does not display because the image is not found when request is made for the image

Request URL:https://staging.example.com/storage/item-category/QCfcNCbZ0idd69muyL0Ux7X95NYj1Y0GgVSvYi0k.png

I can confirm that the image is stored in the db table, and inside staging/storage/app/public/item-category

Why does this same configuration work on my local dev system but not on the staging server? Spent the best part of my morning trying to figure this out.

0 likes
4 replies
MichalOravec's avatar

@elo Try to run this command from your public folder, where you have js and css files, so you create your symlink manually.

ln -s ../storage/app/public storage
elo's avatar
Level 3

I created the symlink by running the command php artisan storage:link

MichalOravec's avatar

And symlink exists? Because sometimes on some servers this command php artisan storage:link doesn't work.

elo's avatar
Level 3

Yes I can actually see that the link exist. It shows on the folder too that its linked. The pain ...

Please or to participate in this conversation.