Laravel在生产服务器上不显示图像

乔斯

我的生产服务器是ubuntu Ubuntu 16.04.3 LTS,我在运行laravel 5.5:

/ var / www / forumb

我的公用文件夹在目录中:

/ var / www / forumb / public

用户上传图片,这些图片保存在:

/ var / www / forumb /公共/上传/图片

images文件夹中的images文件夹具有777权限,其中有使用封面的图像,并且这些图像从视图中正常显示

问题是从视图中看不到上载用户的图像,这些图像位于同一文件夹图像中

我可以直接从浏览器看到这样的封面图像:

http://forumb.com/uploads/images/banner1.jpeg

用户图像

http://forumb.com/uploads/images/5fa7385e1542a31ab9c34419b4d914fe81a11449.jpeg

但是这些看不到,laravel返回404错误

从视图中可以看到的唯一图像是框架附带的图像,位于images文件夹中

在我将其他文件从Filezilla上传到服务器之前,其他所有内容都看不到

这只会在生产服务器上发生,在我的本地主机上一切正常

这是视图中的mi代码

<img class="card-img-top border-bot" src="{{ !is_null(user()->image) ? $profile_image : '/uploads/images/facebook-default-no-profile-pic.jpg' }}" class="img-fluid rounded mx-auto d-block" alt="{!! user()->nombre_empresa !!}">

这是我的控制器

public function index()
{
    $perPage = 6;
    $page = input('page', 1);
    $baseUrl = config('app.url') . '/news-and-events';
    $items = News::whereHas('photos')->with('photos')->active()->orderBy('active_from', 'DESC')->select('news.*')->get();
    $profile_image = profile_image();
    $total = $items->count();

    // paginator
    $paginator = new LengthAwarePaginator($items->forPage($page, $perPage), $items->count(),
        $perPage, $page, ['path' => $baseUrl, 'originalEntries' => $total]);

    // if pagination ajax
    if (request()->ajax()) {
        return response()->json(view('website.news_events.pagination')
            ->with('paginator', $paginator)
            ->render());
    }

    return $this->view('news_events.news_events')->with('paginator', $paginator)->with('profile_image', $profile_image);
}

profile_image()函数

function profile_image()
{
    $image = user()->image;
    $gender = user()->gender;
    if ($image && strlen($image) > 5) {
        return '/uploads/images/' . $image;
    }
    else {
        return "/images/admin/$gender.png";
    }
}

图片已正常上传但未显示

阿列克谢·梅曾宁(Alexey Mezenin)

当您将上传的文件保存到磁盘时,Laravel会将文件放入storage/app/public而不是public因此,您需要创建一个符号链接才能从Web上访问这些文件。

公共磁盘使用本地驱动程序并将这些文件存储在中storage/app/public为了使它们可以从网上访问,您应该创建一个从public/storage的符号链接storage/app/public

要创建符号链接,可以使用storage:linkArtisan命令:

php artisan storage:link

https://laravel.com/docs/5.5/filesystem#the-public-disk

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Laravel:MethodNotAllowedHttpException仅在生产服务器上

Laravel事件不在生产服务器上广播

Laravel 4无法在生产服务器上运行

图像 url 在开发服务器上工作,但在生产服务器上失败

DOMPdf 不在生产服务器上生成 PDF,只显示代码

Laravel Store 功能在生产服务器上被忽略

在生产linux服务器上跟踪内存损坏

Docker 容器在生产服务器上失败

在生产服务器上未调用OnException

在生产服务器上未调用DefaultHandshakeHandler的defineUser

Highcharts 未在生产服务器上正确呈现

Laravel如何在生产中启动服务器

Web服务器不显示图像

背景图像显示在实时服务器上,而不显示在Github Pages上

无法在生产服务器上连接 Amazon RDS 但在本地服务器上连接

UpdatePanel在生产服务器上完全回发,但在本地服务器上异步

模板可在Localhost上使用,但不能在生产/实时服务器上使用

路由可在localhost上运行,但不能在生产服务器上运行

在生产服务器上找不到cakephp控制器错误

CakePHP 3“找不到控制器类XYZ。” 仅在生产服务器上

在生产服务器上找不到控制器操作

使用Go时在生产服务器上更新代码

Django Admin样式表不会在生产服务器上加载

在生产服务器上使用非官方的PHP PPA

JS无法在生产服务器上正确解析日期

不确定如何使用ExpressJS在生产服务器上启动和部署ReactJS App

代码在生产服务器上的运行速度慢得多

如何在生产服务器上重置git repo?

Controller.HttpContext.Request.Browser.IsMobileDevice在生产服务器上为false