Laravel 8 Jetstream 个人资料照片未显示

Kha*_*rok 8 laravel laravel-jetstream

Laravel 8 和 jetstream,真的是新的吗?

我只是尝试在 fortify 中安装和播放它,但我真的不明白为什么我的个人资料照片没有显示图片。

更新配置文件信息表单

<!-- Current Profile Photo -->
<div class="mt-2" x-show="! photoPreview">
<img src="{{ $this->user->profile_photo_url }}"
          alt="{{ $this->user->name }}"
          class="rounded-full h-20 w-20 object-cover">
</div>
Run Code Online (Sandbox Code Playgroud)

.Env

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:6IJbdi+QYczKeLT7yOw3OgPsHucXn1KxVUb27hTQKpU=
APP_DEBUG=true
APP_URL=http://127.0.0.1:8000
Run Code Online (Sandbox Code Playgroud)

配置/文件系统

'public' => [
            'driver' => 'local',
            'root' => storage_path('/public/storage'),
            'url' => env('APP_URL').'/public/storage/',
            'visibility' => 'public',
        ],
Run Code Online (Sandbox Code Playgroud)

Evi*_*oda 17

您的问题是.env文件中的默认 APP_URL 设置:

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:6IJbdi+QYczKeLT7yOw3OgPsHucXn1KxVUb27hTQKpU=
APP_DEBUG=true
APP_URL=http://localhost
Run Code Online (Sandbox Code Playgroud)

artisan serve 命令在http://127.0.0.1:8000上启动了该应用程序,因此您相应地更改了 APP_URL:

APP_URL=http://127.0.0.1:8000
Run Code Online (Sandbox Code Playgroud)

我不会推荐这个。有时,由于各种原因,该命令可能会将端口更改为 8001、8002 等。

$ php artisan serve
Starting Laravel development server: http://127.0.0.1:8000
Failed to listen on 127.0.0.1:8000 (reason: Address already in use)
Starting Laravel development server: http://127.0.0.1:8001
PHP 7.4.12 Development Server (http://127.0.0.1:8001) started
Run Code Online (Sandbox Code Playgroud)

简单的解决方案

只需评论或将.env文件中的APP_URL留空:

#APP_URL=http://localhost
APP_URL=
Run Code Online (Sandbox Code Playgroud)

这将从配置文件图像中删除 http://localhost 部分并解决问题:

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:6IJbdi+QYczKeLT7yOw3OgPsHucXn1KxVUb27hTQKpU=
APP_DEBUG=true
APP_URL=http://localhost
Run Code Online (Sandbox Code Playgroud)

无论如何,您将在生产环境中拥有不同的.env文件。

此外

您在 config/filesystems.php 文件中做了一个小改动:

APP_URL=http://127.0.0.1:8000
Run Code Online (Sandbox Code Playgroud)

原来的设置是:

$ php artisan serve
Starting Laravel development server: http://127.0.0.1:8000
Failed to listen on 127.0.0.1:8000 (reason: Address already in use)
Starting Laravel development server: http://127.0.0.1:8001
PHP 7.4.12 Development Server (http://127.0.0.1:8001) started
Run Code Online (Sandbox Code Playgroud)

它仅在您删除并重建符号链接后才起作用。
但是现在,在您的项目目录中,您可能会遇到这样的情况:

    - 公共 - 存储
      + css -应用程序
      + js -公共
      - 存储 -个人资料照片
        -公共                         -公共
          -存储                        -存储
            -个人资料照片                 -个人资料照片
        .htaccess + 框架
        favicon.ico + 日志
        索引.php
        混合清单.json
        机器人.txt
        网页配置

基本上,您制作了一个新磁盘。我想这不是故意的。
此外,您的个人资料照片的网址中可能有一些令人困惑的部分:
.../storage/public/storage/profile-photos/...

您可以恢复到原始设置,删除附加文件夹,并重建系统链接。

配置/文件系统.php

#APP_URL=http://localhost
APP_URL=
Run Code Online (Sandbox Code Playgroud)


小智 12

您需要先在 public 下创建存储然后链接它。所以首先去laravel项目主文件夹,然后是公共文件夹。如果存储链接不存在,则创建它。然后回到项目主文件夹并创建存储链接

$  cd (laravel project folder)
$  cd public
$  rm -r storage
$  cd ..
$  php artisan storage:link
Run Code Online (Sandbox Code Playgroud)

它应该解决问题..

  • 快速提醒一下,对于那些使用 Laravel Sail 的人,您将需要 `sail artisan storage:link` 而不是 php artisan。 (2认同)

小智 7

在配置文件夹中找到名为jetstream.php的文件,并在返回的数组中查找“features”键并取消注释Features::profilePhotos()值。

前:

'features' => [
    // Features::profilePhotos(),
    // Features::api(),
    // Features::teams(),
],
Run Code Online (Sandbox Code Playgroud)

后:

'features' => [
     Features::profilePhotos(),
    // Features::api(),
    // Features::teams(),
],
Run Code Online (Sandbox Code Playgroud)


Kha*_*rok 6

头像是否保存成功?

(窗口)如果是,这些是我修复它的步骤:

  • 删除在 /project/public/ 创建的快捷方式文件夹存储
  • 再次使用命令php artisan storage:link
  • 刷新一下网页就解决了。


Man*_*R S 6

在 .env 中设置你的 APP_URL ,我的是 APP_URL=http://localhost:8000 并在 CLI 中运行命令作为

php artisan storage:link
Run Code Online (Sandbox Code Playgroud)

为 storage/app/public 创建符号链接,如果您尚未运行该命令,您将不会在仪表板中获得个人资料图像。