共享主机中的Laravel存储链接

时间:2019-06-19 06:45:51

标签: laravel file-upload storage hosting

在共享主机上设置存储链接时遇到问题。 因此,我无法将任何图像上传到共享主机中的存储文件夹

4 个答案:

答案 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文件夹中(甚至可以稍后使用某些脚本将其自动化)。但是,变通办法是新的变通办法,最好不要一味地以错误和错误的方式来做,而要使用简单而正确的方法,即使乍一看对您来说也很难。