【问题标题】:Missing Image After Hosting in 000webhost在 000webhost 中托管后缺少图像
【发布时间】:2021-04-28 03:12:45
【问题描述】:

我有一个使用 laravel 的简单 CRUD 项目。一切都在本地服务器上顺利运行,但是在我尝试在 000webhosting 上托管后,我的项目中的所有图像都没有出现......也许它在 url 中。

这是托管后网络的外观: result

这是我的代码 1:

<link rel="icon" type="image/png" href="{{ Storage::url('public/brands/cb_indonesia.png') }}">

2:

<nav class="navbar navbar-expand-lg navbar-light bg-light shadow-sm">
    <div class="container">
        <a class="navbar-brand" href="#">
            <img src="{{ Storage::url('public/brands/cb_indonesia.png') }}" width="30" height="30" class="d-inline-block align-top" alt="" loading="lazy">
            Lestari Nusantara
        </a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        
        <div class="collapse navbar-collapse" id="navbarSupportedContent">
            <ul class="navbar-nav ml-auto">
                <li class="nav-item mx-1">
                    <a href="{{ route('blog.create') }}" class="btn btn-success"><i class="fas fa-plus-square"></i></a>
                </li>
                <li class="nav-item mx-1">
                    <a href="https://github.com/rahmannurhidayat022" class="btn btn-dark"><i class="fab fa-github"></i></a>
                </li>
            </ul>
        </div>
    </div>
</nav>

3:

<div class="row">
        @foreach ($blogs ?? '' as $blog)
            <div class="col-lg-4 col-md-6 col-sm-12">
                <div class="card my-2 shadow-sm">
                    <img src="{{ Storage::url('public/blogs/').$blog->image }}" class="card-img-top" alt="{{ $blog->image }}">
                    <div class="card-body">
                        <h5 class="card-title">{{ $blog->title }}</h5>
                        {!! $blog->content !!}
                        <form class="form-inline" onsubmit="return confirm('Apakah Anda Yakin ?');" action="{{ route('blog.destroy', $blog->id) }}" method="POST">
                            <a href="{{ route('blog.edit', $blog->id) }}" class="btn my-1 btn-block btn-primary"><i class="fas fa-edit"></i></a>
                            @csrf
                            @method('DELETE')
                            <button type="submit" class="btn my-1 btn-block btn-danger"><i class="fas fa-trash"></i></button>
                        </form>
                    </div>
                </div>
            </div>
        @endforeach
    </div>

当然,我已经运行了命令 [ php artisan storage:link ] ... 结果运行正常... 但是托管后一切都变了

【问题讨论】:

  • 你需要运行 php artisan storage:link 命令。
  • 当然,我已经运行了命令……结果运行正常……但是托管后一切都变了
  • 通过终端在您的托管服务器中重新运行该命令。
  • 但在免费托管中无法访问 SSH :(...任何解决方案?

标签: php laravel hosting crud laravel-8


【解决方案1】:

这里的问题是您的图像文件无法公开访问,因此在 laravel 中您想运行 php artisan storage:link 然后您可以访问您的图像。更多信息查看The Public Disk

【讨论】:

  • 当然,我已经运行了命令……结果运行正常……但是托管后一切都变了
【解决方案2】:

好的,您是说您无法访问托管计划中的终端。 这是一个编程解决方案,在 routes/web.php 中创建一个网络路由:

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

然后使用您的网络浏览器yourdomain.com/link 访问该链接。 如果还是不行,试试看/home/public_html里面有没有默认的存储文件夹删除,然后重试。

另一种解决方案:

Route::get('/link', function () {        
   $target = '/home/public_html/storage/app/public';
   $shortcut = '/home/public_html/public/storage';
   symlink($target, $shortcut);
});

对 $target 变量和文件结构的 $shortcut 进行任何必要的更改。

【讨论】:

  • 我试试Route::get('/link', function () { Artisan::call('storage:link'); }); 这个结果ParseError syntax error, unexpected ')'
  • 这是一个语法错误,跟踪哪个文件和行的错误..你有一个额外的')'符号..找到并删除它。该错误与上述代码本身无关。 @rahman022
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-01
  • 1970-01-01
  • 2018-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-06
相关资源
最近更新 更多