代码之家  ›  专栏  ›  技术社区  ›  fightstarr20

Laravel 5.6-尝试检索图像时权限被拒绝

  •  1
  • fightstarr20  · 技术社区  · 6 年前

    我有一个Laravel5.6项目在WindowsBitnamiWamp堆栈上运行。我正在存储这样的图像……

    $imageName = myfile.jpg
    $path = $request->file->storeAs('images', $imageName);
    

    这个工作正常,文件存储正确,我正在尝试像这样检索它。

    $source=storage::get(“images”,$imagename);

    但我收到错误消息…

    file_get_contents(C:\Bitnami\wampstack-7.1.18-1\apache2\htdocs\myproject\storage\app\images): failed to open stream: Permission denied
    

    这看起来像是权限问题,storage\app\images文件夹如下

    drwxr-xr-x 1 win_user 192142 0 Jul  2 18:15 images
    

    有人知道我哪里出错了吗?

    2 回复  |  直到 6 年前
        1
  •  1
  •   kenken9999    6 年前

    文件获取内容(c:\bitnami\wampstack-7.1.18-1\apache2\htdocs\myproject\storage\app\images):无法打开流:权限被拒绝

    您将文件保存到默认本地磁盘,请检查config/filesystems.php

    默认本地磁盘不允许通过URL访问

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

    哎呀,我错了,你得到的是文件,不是通过URL显示图像

    尝试 $source = Storage::get('images/' . $imageName);

        2
  •  0
  •   Adarsh Sojitra    6 年前

    这是许可问题。在文档根目录的父目录中执行以下命令。

    请注意 public_html 不是 public Laravel项目的目录。它是父目录。

    对于Ubuntu:

    sudo chown -R www-data:www-data public_html
    

    对于Centos

    sudo chown -R apache:apache public_html
    

    如果您的Web服务器没有权限写入文件,则执行这些命令将解决此问题。如果有帮助请告诉我。