Laravel - 未在生产服务器中加载的图像,在本地工作正常

时间:2017-10-19 17:42:02

标签: php laravel laravel-5 laravel-5.5

我非常擅长使用laravel,而我真的不明白它是如何处理文件的。我按照文档中的说明操作,按照说明使用了php artisan storage:link,但没有去。我甚至无法通过我的网址访问他们的位置来查看图片。

这是我的config/filesystems文件:

<?php

return [

/*
|--------------------------------------------------------------------------
| Default Filesystem Disk
|--------------------------------------------------------------------------
|
| Here you may specify the default filesystem disk that should be used
| by the framework. The "local" disk, as well as a variety of cloud
| based disks are available to your application. Just store away!
|
*/

'default' => env('FILESYSTEM_DRIVER', 'local'),

/*
|--------------------------------------------------------------------------
| Default Cloud Filesystem Disk
|--------------------------------------------------------------------------
|
| Many applications store files both locally and in the cloud. For this
| reason, you may specify a default "cloud" driver here. This driver
| will be bound as the Cloud disk implementation in the container.
|
*/

'cloud' => env('FILESYSTEM_CLOUD', 's3'),

/*
|--------------------------------------------------------------------------
| Filesystem Disks
|--------------------------------------------------------------------------
|
| Here you may configure as many filesystem "disks" as you wish, and you
| may even configure multiple disks of the same driver. Defaults have
| been setup for each driver as an example of the required options.
|
| Supported Drivers: "local", "ftp", "s3", "rackspace"
|
*/

'disks' => [

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

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

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

    's3' => [
        'driver' => 's3',
        'key' => env('AWS_KEY'),
        'secret' => env('AWS_SECRET'),
        'region' => env('AWS_REGION'),
        'bucket' => env('AWS_BUCKET'),
    ],

],

];

这就是我在模板中调用图像的方式:

<img src="{{asset('storage/images/icons/icon.png')}}">

我已经过检查,图片实际位于ROOT/storage/app/public/images

我在这里做错了什么?最重要的是,为什么这一切在我的本地环境中工作得很好而不是在我的生产服务器中?

有关其他信息:生产服务器由Hostgator托管,位于我公司主站点的子域中。我不知道这是不是一个问题,因为我说我是这个问题的新手。

1 个答案:

答案 0 :(得分:1)

您在刀片模板中使用的asset帮助程序为您提供了public资产的路径,即位于Laravel应用程序的public文件夹中的资产。您的静态资源(例如徽标,背景图片等)应保存在public目录中,该目录是您的应用程序所在的目录。

storage目录通常用于应用中用户的上传资源,例如用户上传新的个人资料图片。要获取存储路径,您可以使用storage_path帮助程序函数来检索路径。或者,您可以使用Storage::url()方法检索存储路径的完整URL。