Laravel 图像未显示在服务器上,但在我的本地计算机上运行良好

问题描述 投票:0回答:5

在我的本地计算机项目工作文件上,但是当我上传到服务器上时,所有图像都不会显示,并且当我点击浏览器的完整图像路径时,会出现 NotFoundHttpException 错误。

我的项目路径是

/public_html/offlinemall/public 

下面是我的 filesystems.php

'disks' => [

    'local' => [
        'driver' => 'local',
        'root' => storage_path('app'),
    ],

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

    's3' => [
        'driver' => 's3',
        'key' => env('AWS_KEY'),
        'secret' => env('AWS_SECRET'),
        'region' => env('AWS_REGION'),
        'bucket' => env('AWS_BUCKET'),
    ],
    'featured' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
    ],

],

我如何获得图像

<img style="height: 480px" src="storage/{{ $ad->avatar }}">

在检查中我得到完整路径,但是当我点击 url 时,我得到 NotFoundHttpException 错误。

http://compare.theofflinemall.com/storage/featured_image/qzHWpQeSfKjZ6DOS59ROyYboJ1GCvVi6NNVfLtVV.jpeg
php laravel laravel-5.4
5个回答
3
投票

基本上它有象征性的问题。也许您已经使用存储目录来存储图像。如果您使用它,您需要通过

php artisan storage:link
创建符号链接。它使用存储名称在本地项目的公共目录中创建一个符号目录。当您将项目上传到服务器上时,符号目录不会随您的项目一起上传。因此,浏览器理所当然不会获取路径并且不会显示图像。从这些角度来看,有很多 解决方案:

解决方案1: ssh密钥访问,如果您有服务器的ssh密钥访问权限,请使用ssh密钥登录到您的服务器,转到您的项目目录并运行命令

php artisan storage:link
它将为您的项目创建符号目录。

解决方案2:通过在服务器上创建cron作业。

解决方案3:通过执行php脚本来创建符号链接。请访问此链接cron作业和php文件执行

解决方案4:通过更改config/filesystem.php中图像路径的根目录。请访问此网址 laracast.com


2
投票

您的服务器无法找到

storage
作为路径,因为它使用
public_path
运行

php artisan storage:link

应该可以。另外,尝试使用

{{ asset('storage/'.$ad->avatar) }}

0
投票

您可以将图像标签更改为:

  1. <img src={{ asset('storage/'.$ad->avatar) }} />
  2. <img src="storage/app/public/{{$ad->avatar) }}" />
  3. <img src="<?php echo asset("storage/app/public/$ad->avatar")?>"></img>

0
投票

如果您已完成所有操作,请尝试以下操作:

检查您的 .env 文件和 APP_URL 值:它应该是 https://[yourwebsite.com] - 有些人忘记从默认本地主机更改它或提供带有额外文件夹/子域的不正确 URL


0
投票

如果您删除存储/上传目录,并使用“php artisan storage:link”重新创建它,问题将得到解决。

© www.soinside.com 2019 - 2024. All rights reserved.