😅How to create laravel storage symbolic link for production or sub domain system? (Phần 2)

https://stackoverflow.com/questions/45825889/how-to-create-laravel-storage-symbolic-link-for-production-or-sub-domain-system

Ask Questionarrow-up-rightAsked 5 years, 4 months agoModified 11 days agoarrow-up-rightViewed 90k times34

When I worked on laravel local development server php artisan storage:link works fine for me. But when I transfer my site to production server then I saw my public storage link was a folder. Then I delete that tried to create a link. I got an error because my app was in the root folder and tried to solve this problem.

Sharearrow-up-rightFollowedited Dec 13, 2017 at 18:10arrow-up-rightCœur's user avatararrow-up-rightCœurarrow-up-right36.1k2424 gold badges191191 silver badges258258 bronze badgesasked Aug 22, 2017 at 19:49Mizanur Rahman Khan's user avatararrow-up-rightMizanur Rahman Khanarrow-up-right1,50211 gold badge1111 silver badges1919 bronze badges

Add a commentarrow-up-right

13 Answers

Sorted by: Highest score (default) Trending (recent votes count more) Date modified (newest first) Date created (oldest first) 72

I solved this problem by another command for creating a symbolic link by terminal/cmd/shh:

ln -s /path/to/laravel/storage/app/public /path/to/public/storage

I solved this also Using laravel web route routes/web.php

Sharearrow-up-rightFollowedited Dec 31, 2019 at 9:04arrow-up-rightanswered Aug 22, 2017 at 19:49Mizanur Rahman Khan's user avatararrow-up-rightMizanur Rahman Khanarrow-up-right1,50211 gold badge1111 silver badges1919 bronze badges

Show 6 more commentsarrow-up-right39

Another simple way is to run Executing php artisan storage:link Command Programmatically

On routes/web.php

Sharearrow-up-rightFollowedited Apr 25, 2019 at 7:09arrow-up-rightAmir's user avatararrow-up-rightAmirarrow-up-right8,72177 gold badges4444 silver badges4848 bronze badgesanswered Mar 29, 2019 at 13:21Fhulufhelo Mokhomi's user avatararrow-up-rightFhulufhelo Mokhomiarrow-up-right55955 silver badges66 bronze badges

Add a commentarrow-up-right6

In case anyone is looking for another flexible solution using php:

And make any required change to the $target variable and the $shortcut upon your files structure.

You can use the above code inside that web route or inside any other function.

Sharearrow-up-rightFollowanswered Jan 24, 2021 at 12:08Ali Ali's user avatararrow-up-rightAli Aliarrow-up-right1,65522 gold badges1717 silver badges3232 bronze badges

Add a commentarrow-up-right5

assuming that your laravel project "public" directory and "public_html" directory are different. Or your subdomain pointer directory may be different , then use your subdomain pointer directory like "public_html" below given process.

apply command: $ php artisan storage:link

this command will create symlink to "public" directory to your laravel project. not inside the "public_html" . so we need to move the "storage" link to "public_html" directory. for this you can move directly. if it doesn't work then move it using command . go inside the "public" directory and run the below command according to your "public_html" directory location.

the path might be different based on your hosting information.

Sharearrow-up-rightFollowanswered Apr 22, 2020 at 7:04AL-IMRAN's user avatararrow-up-rightAL-IMRANarrow-up-right5111 silver badge22 bronze badgesAdd a commentarrow-up-right3

Creating symbolic link in a web server using SSH

In Laravel documentation, a symbolic link (symlink or soft link) from public/storage to storage/app/public should be created to make files accessible from the web.

(THIS PROCEDURE WILL CREATE SYMBOLIC LINK WITHIN THE LARAVEL PROJECT DIRECTORY)

Here are the steps on how you can create symbolic link in your Linux web server using SSH client:

1. Connect and login to your web server using SSH client (e.g. PUTTY).

2. Link storage/app/public to public/storage using the syntax.

Example (in CPanel File Directory)

Sharearrow-up-rightFollowanswered Jun 9, 2020 at 13:02Mateus Gonçalves's user avatararrow-up-rightMateus Gonçalvesarrow-up-right66655 silver badges1515 bronze badgesAdd a commentarrow-up-right2

If you are using a CPANEL web hosting its common for the domain root to be public_html directory which may be an issue as by default Laravel app will try to look for a folder called public in your project root. To solve this open your config/filesystems.php file and change:

to this:

Note that we have changed the links array value from the default public_path('storage') to our custom base_path('public_html/storage') directory

Sharearrow-up-rightFollowedited Apr 9, 2021 at 13:50arrow-up-rightanswered Apr 8, 2021 at 23:41Software Developer's user avatararrow-up-rightSoftware Developerarrow-up-right71088 silver badges1111 bronze badgesAdd a commentarrow-up-right1

I have an account on Hostinger.

I had a big problem with Laravel File Manager, but now I know what was the problem :)

It`s was an issue with a link to storage. My folder public_html had no link but the copy of storage!

  1. Delete this storage or rename it if you want backup :)

  2. Log in to ssh and use command pwd to get the current folder that will help you build a full path.

  3. Use this command:

    ln -s <target_path> <link_path>

In my case this was like:

Good Luck :)

Sharearrow-up-rightFollowanswered Jan 18 at 21:38Adam Boniecki's user avatararrow-up-rightAdam Bonieckiarrow-up-right5122 bronze badgesAdd a commentarrow-up-right1

The easiest option is to run the following in a terminal

Sharearrow-up-rightFollowanswered Apr 17 at 18:58Wakil Ahmed's user avatararrow-up-rightWakil Ahmedarrow-up-right29833 silver badges1212 bronze badgesAdd a commentarrow-up-right0

I had an issue creating a symlink to a folder located under subdomain, tried everything for almost 3 hours, and no luck. My case was as follow:

  1. The uploads folder is located under subdomain: images.example.com.

  2. I upload images using the root document: $_SERVER['DOCUMENT_ROOT'].'/uploads/

  3. I want to create a symlink in that root document.

Finally, I tried this solution and it works as expected:

ln -s /home/customer/www/images.example.com/public_html/uploads /home/customer/www/example.com/public_html/uploads

Note: I used PuTTY to create that symlink

Sharearrow-up-rightFollowanswered Jun 25, 2020 at 14:59Jodyshop's user avatararrow-up-rightJodyshoparrow-up-right63688 silver badges1212 bronze badgesAdd a commentarrow-up-right0

Just write in a php file (like symlink.php) the following code, place it in the website root folder (the folder you placed files in the public folder) and execute it by browsing in your browser to yourwebsite/symlink.php

Sharearrow-up-rightFollowanswered Aug 16 at 17:17Ayenew Yihune's user avatararrow-up-rightAyenew Yihunearrow-up-right8411010 silver badges1616 bronze badgesAdd a commentarrow-up-right0

Here is the code that works for me in the production server

Sharearrow-up-rightFollowanswered Oct 14 at 14:55Joynal Abedin's user avatararrow-up-rightJoynal Abedinarrow-up-right6777 bronze badgesAdd a commentarrow-up-right0

to solve the problem instead of ln -s path/to/target path/to/public/storage just type:

ln -srv ~/path/to/target ~/path/to/public/storage

but first create the folder storage in public.

Sharearrow-up-rightFollowedited Dec 18 at 7:11arrow-up-rightjustANewb stands with Ukraine's user avatararrow-up-rightjustANewb stands with Ukrainearrow-up-right3,48533 gold badges1111 silver badges3333 bronze badgesanswered Oct 26 at 11:47Brro Jindy's user avatararrow-up-rightBrro Jindyarrow-up-right111 bronze badge

Add a commentarrow-up-right-2

All you have to do is access the server through SSH, navigate to the root path where it is your laravel project, for example:

then navigate to the public directory(laravel project) and delete the storage directory if you have uploaded it...

and go back to the public_html and run the command:

that will get the job done...

Sharearrow-up-rightFollow

Last updated

Was this helpful?