我用jetstream/inertia创建了新的laravel 9项目
laravel new testProject
cd testProject
composer require laravel/jetstream
php artisan jetstream:install inertia
npm install
npm run dev
php artisan serve
我对项目所做的就是在 .env 文件中设置数据库访问权限并取消注释 profilePhotos 功能
'features' => [
// Features::termsAndPrivacyPolicy(),
Features::profilePhotos(),
// Features::api(),
// Features::teams(['invitations' => true]),
Features::accountDeletion(),
],
我也跑步
php artisan storage:link
一切看起来都不错,但是在个人资料信息表单中加载个人资料照片后,它就会出现,直到页面重新加载。重新加载后,我看到我的全名和毫无根据的图像图标。在标题的右上角我看到同样的事情。 在浏览器中我看到错误消息
Failed to load resource: the server responded with a status of 404 (Not Found)
页面尝试从
加载图像存储/个人资料照片/P2Fr1yHE0UenDAo5REUWEEWFcwq7esjLu0loP9Xa.png
在我的项目中图像保存在
存储/应用程序/公共/个人资料照片/P2Fr1yHE0UenDAo5REUWEEWFcwq7esjLu0loP9Xa.png
并链接到公共文件夹
公共/存储/个人资料照片/P2Fr1yHE0UenDAo5REUWEEWFcwq7esjLu0loP9Xa.png
我不明白为什么我的照片没有从正确的目录加载。
我找到了解决办法。在供应商/laravel/jetstream/src/HasProfilePhoto.php中的profilePhotoUrl函数我改变了
? Storage::disk($this->profilePhotoDisk())->url($this->profile_photo_path)
到
? Storage::disk(config('profile_photos_disk'))->url($this->profile_photo_path)
据我了解, $this->profilePhotoDisc() 返回错误的答案,即使我只是将其替换为“本地”,它仍然有效,所以我有点困惑,但最终它有效了
上述步骤均不适用于我的新项目,但如果您创建新的 jetream laravel 项目并仅启用配置文件功能并更改 .env 文件中的 url 并清除缓存并运行 php artisanserve 命令希望,那么它将为您工作,因为在我的以前的项目没有任何反应,但上面提到了新项目的简单步骤