9

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>

.Env

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:6IJbdi+QYczKeLT7yOw3OgPsHucXn1KxVUb27hTQKpU=
APP_DEBUG=true
APP_URL=http://127.0.0.1:8000

配置/文件系统

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

16 回答 16

20

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

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:6IJbdi+QYczKeLT7yOw3OgPsHucXn1KxVUb27hTQKpU=
APP_DEBUG=true
APP_URL=http://localhost

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

APP_URL=http://127.0.0.1:8000

我不会推荐这个。有时,由于各种原因,该命令可能会将端口更改为 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

简单的解决方案

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

#APP_URL=http://localhost
APP_URL=

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

<img src="/storage/profile-photos/photo.jpeg">

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

此外

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

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

原来的设置是:

'root' => storage_path('/app/public'),

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

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

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

您可以恢复到原始设置,删除附加文件夹,然后重建 sysmlink。

配置/文件系统.php

'disks' => [
    //...
    'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
    ],
    //...
],
于 2020-11-07T20:24:30.403 回答
14

您需要先在公共下创建存储然后链接它。因此,首先转到 laravel 项目主文件夹,然后转到 public 文件夹。如果存储链接不存在,请创建它。然后回到项目主文件夹并创建存储链接

$  cd (laravel project folder)
$  cd public
$  rm -r storage
$  cd ..
$  php artisan storage:link

它应该解决问题..

于 2020-09-26T10:03:22.187 回答
6

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

php artisan storage:link

要为 storage/app/public 创建符号链接,如果您尚未运行该命令,您将不会在仪表板中获得配置文件图像。

于 2020-12-25T15:01:51.270 回答
6

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

前:

'features' => [
    // Features::profilePhotos(),
    // Features::api(),
    // Features::teams(),
],

后:

'features' => [
     Features::profilePhotos(),
    // Features::api(),
    // Features::teams(),
],
于 2020-11-18T08:54:19.033 回答
4

头像保存成功了吗?

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

  • 删除在 /project/public/ 创建的快捷方式文件夹 storage
  • 再次使用命令php artisan storage:link
  • 刷新网页就解决了。
于 2020-09-26T08:34:08.923 回答
2

我这样做了:删除 filesystems.php 上的(APP_URL),这解决了我的问题,个人资料图片未显示在 jetstream

'public' => [
            'driver' => 'local',
            'root' => storage_path('app/public'),
            'url' => env('').'/storage',
            'visibility' => 'public',
        ],
于 2020-10-12T21:15:16.117 回答
1

首先,我们假设您已经在 profilePhoto 的 config/jetstream 功能中启用

将 your.env 文件更改为已启动的 artisan serve 链接。像这样

  APP_URL=http://127.0.0.1:8000

他们执行这些命令

  1. php工匠存储:链接
  2. php工匠优化
  3. php工匠配置:清除

重新加载或再次上传您的照片资料并完成

于 2021-10-22T11:54:37.383 回答
1

抱歉,我有这个问题已经解决了这个级别

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

  2. 转到 .env 并将应用程序 uri 更改为此APP_URL=http://localhost:8000

  3. 在终端输入:

php artisan serve
于 2020-12-11T20:50:31.180 回答
1

我在使用 Laravel 8(当前最新版本)处理我的项目时遇到了同样的问题这是我解决这个问题的两种方法:

  1. 在第一种方法中,您可以轻松地将浏览器中的应用程序 URL 从 127.0.0.1:8000 更改为localhost:8000,然后使用命令php artisan storage:link将 public/storage 与 storage/app/public 文件夹链接

  2. 或者在第二种方法中,您可以编辑环境文件。转到环境配置文件 (.env) 并将 APP_URL 从 http://localhost 更改为http://127.0.0.1:8000,然后使用命令 php artisan storage将 public/storage 与 storage/app/public 文件夹链接:关联

最后,使用命令php artisan serve重新启动应用程序,现在它必须工作了。我希望它可以帮助任何面临此类问题的人。

于 2021-01-18T19:28:38.767 回答
0
   'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'url' => '/storage',
        'visibility' => 'public',
    ],

嗨嗨嗨

于 2021-02-09T03:35:07.783 回答
0

如果您的 Jetstream 个人资料照片未显示您必须执行简单的 3 个主要步骤

  1. 首先运行这个命令 php artisan storage:link
  2. Features::profilePhotos(),从 config/jetstream.php 启用
  3. 最后,主要是从 .env 文件中更改 APP_URL(这很重要),如果您的 APP_URL=http://localhost 这不会显示给您,因此请将其更改为 APP_URL= http://127.0.0.1:8000或者您正在使用虚拟主机然后 APP_URL= http://livewire_app.dev 看到这对我来说很好在此处输入图像描述
于 2021-07-08T12:24:30.493 回答
0

我遇到了同样的问题,只运行php artisan storage:link 它对我有用。

注意:我在 laravel 的新启动时运行此命令并且没有更改我的存储路径设置(默认)

于 2021-04-15T02:19:38.190 回答
0

使您的 .env APP_URL 正确,并确保运行 php artisan storage:link。 https://github.com/laravel/framework/issues/34319#issuecomment-691677346

于 2020-12-28T22:31:44.717 回答
0

在 config/app.php 中,APP_URL 可能需要一个端口,例如:

'url' => env('APP_URL', 'http://localhost:8080'),

于 2020-11-01T17:52:34.717 回答
0
  • 转到配置文件夹并打开(jetstream.php)文件。
  • 转到功能部分并取消注释个人资料照片功能 在此处输入图像描述
于 2021-05-03T07:13:29.320 回答
-1

我也这样做了:从 config/filesystems.php 中删除了 (APP_URL)

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

但这对我来说只解决了一半的问题。该图像现在仅显示在导航栏中,但仍未显示在个人资料页面中。为此,我这样做了:在 update-profile-information.blade.php 文件中,我将图像源更改为

/storage/profile-photos/{{basename($this->user->profile_photo_path)}}

(可能不是一个合适的解决方案,但它现在对我的学习项目有用)

于 2020-10-14T08:42:37.970 回答