php artisan storage: ссылка на общем хостинге не показывает изображения

Я работал над приложением laravel, поэтому по соображениям безопасности я поместил все свои общедоступные файлы в базовую папку, расположенную в public_html, а другие файлы были помещены в public_html / secondBase.

Теперь, когда я выполняю команду: php artisan storage: link, появляется следующая ошибка.

 ErrorException

  symlink(): No such file or directory

  at vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:265
    261|      */
    262|     public function link($target, $link)
    263|     {
    264|         if (! windows_os()) {
  > 265|             return symlink($target, $link);
    266|         }
    267|
    268|         $mode = $this->isDirectory($target) ? 'J' : 'H';
    269|

Я устал решение ниже

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

public function register()
{
    $this->app->bind('path.public', function() {
        return base_path() . '/public_html/base';
    });
}

второй метод, который я пробовал, - это создание файла symlink.php, но изображения все еще не работают.

symlink.php

<?php 
symlink('/home/hmm/public_html/secondBase/storage/app/public','/home/hmm/public_html/base/storage');

и, наконец, я проложил этот маршрут, где появляется первая ошибка.

Route::get('/clear', function () {
       
    Artisan::call('route:clear');
    Artisan::call('storage:link', [] );
});

Спасибо за любую помощь.


person Mohammed Yahya    schedule 18.10.2020    source источник


Ответы (1)


    Go to /public directory and run:

    rm storage

    Go to Laravel root directory and run:

    php artisan storage:link

Эта проблема возникает, когда проект laravel перемещается / копируется в другую папку.

Ссылка на хранилище все еще существует, что вызывает ошибку исключения. Папка public / storage существует и указывает неправильное местоположение, и ее необходимо удалить с помощью команды rm storage.

После этого запустите php artisan storage: link в терминале, и он создаст ссылку на хранилище.

Это нужно делать КАЖДЫЙ раз, когда laravel перемещается / копируется / развертывается!

person Babak Asadzadeh    schedule 18.10.2020
comment
Вам нужно добавить флаг для удаления папки, например, rm -fr storage, и это приведет к Please provide a valid cache path ошибке. - person Zac Grierson; 05.03.2021