我在共享主机服务器上托管了laravel应用程序。 在服务器上有2个文件夹:
-
1) Laravelapp -> 包含 (app,config,database,vendor...等文件夹)
-
2)public_html->包含(css,js,images,storage文件夹)
我使用以下代码上传图像:
if($request->hasFile('file')){
$filenameWithExt=$request->file('file')->getClientOriginalName();
$filename=pathinfo($filenameWithExt,PATHINFO_FILENAME);
$extension=$request->file('file')->getClientOriginalExtension();
$fileNameToStore=str_slug($filename,'_').'_'.time().'.'.$extension;
request()->file->move(public_path('storage/profile'), $fileNameToStore);
$image="/storage/profile/".$fileNameToStore;
}
已成功将文件上传到laravelapp/public/storage/profile
文件夹
我已经创建了符号链接以laravelapp/public/storage
与public_html/storage
在数据库中:图像路径保存为/storage/profile/user1.png
在刀片模板中,我使用:<img src="{{$img}}" />
但是图像网址:
www.mydomain.com/storage/profile/user1.png 重定向至404页面和图像不显示。
任何人请帮我解决问题。
这在共享主机服务器上对我有用:
编辑config/filesystems.php
并像这样修改public
部分
'public' => [
'driver' => 'local',
'root' => storage_path(),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
]
请注意,storage_path() 不接受任何参数。现在storage
从public
目录中删除文件夹(如果已经存在),然后执行以下操作:
php artisan storage:link
因此,根据我们在评论中的讨论和Laravel 5.5
文档,您的可公开访问的文件应放在目录storage/app/public
要使它们可从 Web 访问,您应该创建一个从public/storage
到storage/app/public.
的符号链接
ln -s /path/to/laravel/storage/app/public /path/to/laravel/public/storage
现在,您可以使用asset
帮助程序在视图中创建文件的 URL:
echo asset('storage/file.txt');
希望这对您和其他用户有所帮助!
1) 将文件存储在 laravelapp/storage/app/public/cover/文件夹中
use IlluminateSupportFacadesStorage;
$path=$request->file('cover_image')->storeAs('public/cover_images',$fileNameToStore);
2)将文件存储在laravelapp/public/cover/文件夹中
$path=request()->cover_image->move(public_path('storage/profile'), $fileNameToStore);
在共享主机服务器中有2个文件夹:
拉拉维拉普和public_html
由于我使用第二种方式上传图像,我已经通过创建从laravelapp/public/storage文件夹到public_html/的符号链接来解决此问题
ln -s /home/username/laravelapp/public/storage /home/username/public_html/
存储/公用文件夹的符号链接可能是错误的,您可以查看这是否指向正确的文件夹 使用 ls -l 命令检查给定文件是否为符号链接,并查找符号链接指向的文件或目录。
ls -l /usr/bin/python
lrwxrwxrwx 1 root root 9 Apr 16 2020 /usr/bin/python -> python2.7
第一个字符"l"表示该文件是符号链接。"->"符号显示符号链接指向的文件。
rm 命令删除给定的文件和目录。要删除符号链接,请调用 rm 命令,后跟符号链接名称作为参数:
rm symlink_name
创建指向存储公用文件夹的新符号链接
php artisan storage:link
在cPanel或任何活动服务器中,请确保您的存储文件夹和子文件夹具有正确的权限。应该是644, 755 or 777
因为我习惯了使用 xampp 在本地主机上工作
我必须将修复资产网址的参数添加到项目主目录中的 .env 本地主机
ASSET_URL=http://localhost/project_name
我使用存储系统,所以更详细,我使网址像
http://localhost/project_name/public/storage
所以我可以使用<?= asset('custom_directory/images/brand.png'); ?>
来获取网址
我还更改了db_host,memchached_host也redis_host本地主机,以确保 xampp 一切正常进行
DB_HOST=localhost
MEMCACHED_HOST=localhost
REDIS_HOST=localhost
只要您使用 xampp,我们就应该尊重 apache 和 mysql 数据库,并给他们 localhost isntead 的 127.0.0.1,因为他们对待它的方式不同
127.0.0.1和本地主机有什么区别