【问题标题】:Laravel 7 I cannot display my images on remote server but can locallyLaravel 7 我无法在远程服务器上显示我的图像,但可以在本地显示
【发布时间】:2020-09-14 06:36:43
【问题描述】:

我使用共享主机,在将我的网站推送到它之后,一切正常,除了我的图像没有显示。我必须补充一点,这在本地 laravel 嵌入式服务器上运行顺利。 让我们以横幅图像(轮播)为例

首先是文件系统配置文件

<?php
return [
    'default' => env('FILESYSTEM_DRIVER', 'local'),
    'cloud' => env('FILESYSTEM_CLOUD', 's3'),

    'disks' => [

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

        'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('APP_URL').'/storage',
            /*added */
            'permissions' => [
                'file' => [
                    'public' => 0664,
                    'private' => 0600,
                ],
                'dir' => [
                    'public' => 0775,
                    'private' => 0700,
                ],
            ],
            /*end added*/
            'visibility' => 'public',
        ],

        's3' => [
            'driver' => 's3',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'region' => env('AWS_DEFAULT_REGION'),
            'bucket' => env('AWS_BUCKET'),
            'url' => env('AWS_URL'),
            'endpoint' => env('AWS_ENDPOINT'),
        ],

    ],

    'links' => [
        public_path('storage') => storage_path('app/public'),
    ],

由于图像文件来自同一共享主机上的其他应用程序(symfony),我通过命令行将文件复制到 /storage/app/public/banner 目录中,但在 /public/storage/banner 目录中也没有看到它们

这是我的看法

 <div id="option" class="carousel carousel-fade container banner" data-ride="carousel" data-interval="9000">
    <div id="carouselExampleSlidesOnly"
      class="carousel slide"
      data-ride="carousel">
      <div class="carousel-inner">
        <div class="carousel-item active">
          <img class="d-block w-100" src="<?php echo asset('storage/banner/banner-001.jpg'); ?>" alt="First slide" />
        </div>
        <div class="carousel-item">
          <img class="d-block w-100" src="/storage/banner/banner-002.jpg"  alt="Second slide"/>
        </div>
        <div class="carousel-item">
          <img class="d-block w-100" src="/storage/banner/banner-003.jpg" alt="Third slide" />
        </div>
        <div class="carousel-item">
          <img class="d-block w-100" src="/storage/banner/banner-004.jpg" alt="Third slide" />
        </div>
        <div class="carousel-item">
          <img class="d-block w-100" src="/storage/banner/banner-005.jpg" alt="Third slide" />
        </div>
        <div class="carousel-item">
          <img class="d-block w-100" src="/storage/banner/banner-006.jpg" alt="Third slide" />
        </div>
        <div class="carousel-item">
          <img class="d-block w-100" src="/storage/banner/banner-007.jpg" alt="Third slide" />
        </div>
       
      </div>
    </div>
  </div>
  <?php echo asset('storage/banner/banner-001.jpg'); ?>

我尝试直接编写 url 或使用资产助手,但我没有看到任何区别。

下面要全面的是文件和文件夹的权限

denentza@fox [~/laravel.denentzat.fr]# ls -l public/storage
total 16
drwxr-x--- 4 denentza denentza 4096 14 sept. 07:16 ./
drwxr-xr-x 9 denentza nobody   4096 14 sept. 07:39 ../
drwxrwxr-x 2 denentza denentza 4096 14 sept. 07:08 banner/
drwxr-x--- 3 denentza denentza 4096 13 sept. 18:03 photos/

denentza@fox [~/laravel.denentzat.fr]# ls -l public/storage/banner
total 632
drwxrwxr-x 2 denentza denentza   4096 14 sept. 07:08 ./
drwxr-x--- 4 denentza denentza   4096 14 sept. 07:16 ../
-rw-rw-r-- 1 denentza denentza  68243 14 sept. 07:08 banner-001.jpg
-rw-rw-r-- 1 denentza denentza 106837 14 sept. 07:08 banner-002.jpg
-rw-rw-r-- 1 denentza denentza 121547 14 sept. 07:08 banner-003.jpg
-rw-rw-r-- 1 denentza denentza  55213 14 sept. 07:08 banner-004.jpg
-rw-rw-r-- 1 denentza denentza  78082 14 sept. 07:08 banner-005.jpg
-rw-rw-r-- 1 denentza denentza  84133 14 sept. 07:08 banner-006.jpg
-rw-rw-r-- 1 denentza denentza 110553 14 sept. 07:08 banner-007.jpg

denentza@fox [~/laravel.denentzat.fr]# ls -l storage/app/public
total 16
drwxrwxr-x 3 denentza denentza 4096 14 sept. 08:03 ./
drwxrwxr-x 4 denentza denentza 4096 13 sept. 17:16 ../
drwxrwxr-x 2 denentza denentza 4096 14 sept. 08:03 banner/
-rwxrwxr-x 1 denentza denentza   14 13 sept. 16:22 .gitignore*

denentza@fox [~/laravel.denentzat.fr]# ls -l public/storage/banner
total 632
drwxrwxr-x 2 denentza denentza   4096 14 sept. 07:08 ./
drwxr-x--- 4 denentza denentza   4096 14 sept. 07:16 ../
-rw-rw-r-- 1 denentza denentza  68243 14 sept. 07:08 banner-001.jpg
-rw-rw-r-- 1 denentza denentza 106837 14 sept. 07:08 banner-002.jpg
-rw-rw-r-- 1 denentza denentza 121547 14 sept. 07:08 banner-003.jpg
-rw-rw-r-- 1 denentza denentza  55213 14 sept. 07:08 banner-004.jpg
-rw-rw-r-- 1 denentza denentza  78082 14 sept. 07:08 banner-005.jpg
-rw-rw-r-- 1 denentza denentza  84133 14 sept. 07:08 banner-006.jpg
-rw-rw-r-- 1 denentza denentza 110553 14 sept. 07:08 banner-007.jpg

【问题讨论】:

标签: laravel permissions


【解决方案1】:

你应该使用 Laravel 文件系统。 Laravel Flysystem 集成提供了简单易用的驱动程序来处理本地文件系统和 Amazon S3。更好的是,在这些存储选项之间切换非常简单,因为每个系统的 API 都相同。

这里是官方的:https://laravel.com/docs/7.x/filesystem

这里是示例:https://www.larashout.com/a-complete-guide-to-laravel-storage

【讨论】:

  • 感谢您的宝贵时间。我以为我在使用 Laravel 文件系统!请参阅我上面的 config/filesystem.php。但这是否意味着我不能手动将图像(我的意思是通过应用程序上传之外的其他方式)放入文件夹中?
  • 您可以通过Storage::disk('s3')-&gt;get('image.jpg');获取图片
  • 看来我很难让你理解我的真实观点。除了我对 Laravel 文件系统的可能误用之外,我们将承认误用已修复,我的问题是如何在服务器端重现具有多层嵌套子目录的图像目录,并使所有这些内容可在页面中显示。我可以使用标准文件管理器(我称之为“手动”)来做到这一点,还是应该编写视图和控制器来做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-25
  • 1970-01-01
  • 2019-11-05
  • 2013-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多