Php 图像存储链接在laravel的联机服务器中不工作

Php 图像存储链接在laravel的联机服务器中不工作,php,laravel,Php,Laravel,我有一个laravel应用程序,我在localhost中上传图像,它正在工作,我使用存储目录的链接 php artisan storage:link localhost 当使用我自己的控制器上载1个图像时,图像将存储在storage/app/public/posts/file1.jpg中,同时图像将存储在root/public/storage/posts/file1.jpg=>中,效果非常好 但在在线服务器共享主机中 当我上传图像时,它不起作用 图像将存储在storage/app/public

我有一个laravel应用程序,我在localhost中上传图像,它正在工作,我使用存储目录的链接

php artisan storage:link
localhost

当使用我自己的控制器上载1个图像时,图像将存储在storage/app/public/posts/file1.jpg中,同时图像将存储在root/public/storage/posts/file1.jpg=>中,效果非常好

但在在线服务器共享主机中 当我上传图像时,它不起作用

图像将存储在storage/app/public/posts/file1.jpg中,但图像不存储在root/public/storage/posts/file1.jpg=>中,您可以在路由/控制器中使用Artisan::call()方法执行Artisan命令,而无需使用终端

$exitCode=Artisan::call('storage:link',[]);

echo$exitCode;//0退出代码,无错误。

按公共路径更改存储路径设置

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

if ($request->hasFile('image')) {
  $image = $request->file('image');
  $filename = 'page' . '-' . time() . '.' . $image->getClientOriginalExtension();
  $location = public_path('app/public_html/images/' . $filename);
  Image::make($image)->resize(1200, 600)->save($location);
  if(!empty($page->image)){
    Storage::delete('images/' . $page->image);
  }
  $page->image = $filename;            
}
如果不起作用,您可以尝试:


$path=base_path()。/../public_html/images'

如果我对答案发垃圾邮件,很抱歉。这家伙发布了同样的问题并解决了它,他说:

谢谢你的帮助,我试着运行php artisan 存储:我的服务器上的链接,我发现我的服务器已禁用 出于安全原因,请使用符号链接

所以我改变了我所有的图片上传功能,把图片上传到 我的公用文件夹,而不是存储文件夹,现在一切正常 工作很好


在花了5到6个小时后,我找到了解决办法

首先,删除public/storage{storage}文件夹 其次,将此代码放在web.php文件的顶部

Artisan::call('storage:link');
这段代码手动运行
php artisan storage:link
命令。

我也遇到了同样的问题! 当我仔细查看存储文件夹时,我发现在我的本地版本中,我有一个链接,但在在线服务器上,它是一个常规文件夹

这在共享主机上对我有效。
我在路由文件的开头添加了命令“
Artisan::call('storage:link',[]);
”,并从public中删除了存储文件夹。删除文件夹很重要,否则它对我不起作用。正在运行时,已从路由中删除代码,因为它只应在服务器上运行一次。

我无法使Laravel存储在本地主机上正常工作

解决方案: 这就是在本地主机(可能还有生产服务器)上解决此问题的方法

  • 删除app/public/storage文件夹
  • 删除存储/应用/公用文件夹
  • 在存储/应用/文件夹中创建一个名为“public”的文件夹(是的,就是刚才删除的文件夹)
  • 运行以下artisan命令:
  • php artisan存储:链接
    全部完成


    通过Laravel的Storage::class上传的文件现在将显示在“app/public/Storage”和“Storage/app/public”文件夹中。

    上传网站时是否再次运行
    php artisan Storage:link
    ?上传到在线服务器后,我没有这样做。我不知道如何在在线服务中运行这个命令如果你没有访问ssh的权限,也许这个链接可以帮助你我这样做了,但同样的问题我在我的路径顶部添加了这个代码,但结果是一样的