在共享主机上设置存储链接时遇到问题。 因此,我无法将任何图像上传到共享主机中的存储文件夹
答案 0 :(得分:5)
只需创建一条路线并访问一次即可。
Route::get('generate', function (){
\Illuminate\Support\Facades\Artisan::call('storage:link');
echo 'ok';
});
答案 1 :(得分:4)
1) Remove storage folder in public_html/public/storage if you perfomed storage:link in local
2) then Create a php file for example mysymlink.php in public_html folder
3) Add below codes to mysymlink.php file
$targetFolder = $_SERVER['DOCUMENT_ROOT'].'/storage/app/public';
$linkFolder = $_SERVER['DOCUMENT_ROOT'].'/public/storage';
symlink($targetFolder,$linkFolder);
echo 'Symlink completed';
4) Go to web site example.com/mysymlink.php
That is all...
答案 2 :(得分:0)
您可以使用自定义方法将文件上传到公共目录,而不必使用Storage Facade。
if($request->has('image')){
$img = $request->file('image');
$ext = $img->getClientOriginalExtension();
$name = time().'.'.$ext;
$path = public_path('\img\uploads');
$img->move($path, $name);
User::where('id', $user->id)->update([
'image' => $name
]);
}
答案 3 :(得分:0)
在共享主机环境中使用Laravel可能不是最好的决定。现在,有许多价格相同的好选择,即使您没有任何经验,您也需要花点功夫来了解如何使用它们。您可以使用 DigitalOcean , Linode , Vultr 或更多其他功能,这样可以节省大量时间。
如果您出于某些原因仍想使用共享主机并真正回答您的问题,您可以
ln -s /home/user/laravel/storage/app/public /home/user/public_html/storage
。 当然,根据您的托管结构,路径应该有所不同,您应该可以自己弄清楚。 storage
手动放置到storage/app/public
文件夹中(甚至可以稍后使用某些脚本将其自动化)。但是,变通办法是新的变通办法,最好不要一味地以错误和错误的方式来做,而要使用简单而正确的方法,即使乍一看对您来说也很难。