Php 图像存储链接在laravel的联机服务器中不工作
我有一个laravel应用程序,我在localhost中上传图像,它正在工作,我使用存储目录的链接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
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的权限,也许这个链接可以帮助你我这样做了,但同样的问题我在我的路径顶部添加了这个代码,但结果是一样的