【发布时间】:2019-11-01 20:01:26
【问题描述】:
我在共享主机上设置存储链接时遇到问题。 因此,我无法将任何图像上传到共享主机中的存储文件夹
【问题讨论】:
-
您最好的选择是使用
file_put_contents()将图像存储在您的公共目录中。
标签: laravel file-upload storage hosting
我在共享主机上设置存储链接时遇到问题。 因此,我无法将任何图像上传到共享主机中的存储文件夹
【问题讨论】:
file_put_contents() 将图像存储在您的公共目录中。
标签: laravel file-upload storage hosting
您可以使用自定义方法将文件上传到您的公共目录,而不是使用 Storage 门面
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
]);
}
【讨论】:
<?php $targetFolder = $_SERVER['DOCUMENT_ROOT'].'/storage/app/public'; $linkFolder = $_SERVER['DOCUMENT_ROOT'].'/public/storage'; symlink($targetFolder,$linkFolder); echo 'Symlink process successfully completed'; ?>
在共享主机环境中使用 Laravel 可能不是最好的决定。现在可以以相同的价格获得许多不错的选择,即使您之前没有经验,您也只需要付出一些努力来了解如何使用它们。您可以使用 DigitalOcean、Linode、Vultr 或更多,它会为您节省大量时间。
如果您出于某种原因仍想使用共享主机并实际回答您的问题,您可以
ln -s /home/user/laravel/storage/app/public /home/user/public_html/storage。 当然应该由你的路径来决定,具体取决于你的托管结构,你应该能够自己弄清楚。
storage 放入storage/app/public 文件夹(您甚至可以稍后通过使用一些脚本来自动化它)。但是变通方法会产生新的变通方法,最好不要用错误的方法来做,而要使用简单而正确的方法,即使乍一看似乎很难。【讨论】:
如果您执行 storage:link in local,请删除 public_html/public/storage 中的 storage 文件夹
然后在 public_html 文件夹中创建一个 php 文件,例如 mysymlink.php
将以下代码添加到 mysymlink.php 文件中
$targetFolder = $_SERVER['DOCUMENT_ROOT'].'/storage/app/public';
$linkFolder = $_SERVER['DOCUMENT_ROOT'].'/public/storage';
symlink($targetFolder,$linkFolder);
echo 'Symlink completed';
【讨论】:
只需创建一个路由并访问一次。
Route::get('generate', function (){
\Illuminate\Support\Facades\Artisan::call('storage:link');
echo 'ok';
});
【讨论】:
web.php?我已经这样做了,但它似乎不起作用。