在我的本地计算机项目工作文件上,但是当我上传到服务器上时,所有图像都不会显示,并且当我点击浏览器的完整图像路径时,会出现 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 artisan storage:link
创建符号链接。它使用存储名称在本地项目的公共目录中创建一个符号目录。当您将项目上传到服务器上时,符号目录不会随您的项目一起上传。因此,浏览器理所当然不会获取路径并且不会显示图像。从这些角度来看,有很多 解决方案:
解决方案1: ssh密钥访问,如果您有服务器的ssh密钥访问权限,请使用ssh密钥登录到您的服务器,转到您的项目目录并运行命令
php artisan storage:link
它将为您的项目创建符号目录。
解决方案2:通过在服务器上创建cron作业。
解决方案3:通过执行php脚本来创建符号链接。请访问此链接cron作业和php文件执行。
解决方案4:通过更改config/filesystem.php中图像路径的根目录。请访问此网址 laracast.com
您的服务器无法找到
storage
作为路径,因为它使用 public_path
运行
php artisan storage:link
应该可以。另外,尝试使用
{{ asset('storage/'.$ad->avatar) }}
您可以将图像标签更改为:
<img src={{ asset('storage/'.$ad->avatar) }} />
<img src="storage/app/public/{{$ad->avatar) }}" />
<img src="<?php echo asset("storage/app/public/$ad->avatar")?>"></img>
如果您已完成所有操作,请尝试以下操作:
检查您的 .env 文件和 APP_URL 值:它应该是 https://[yourwebsite.com] - 有些人忘记从默认本地主机更改它或提供带有额外文件夹/子域的不正确 URL
如果您删除存储/上传目录,并使用“php artisan storage:link”重新创建它,问题将得到解决。