共享主机中的 Laravel 存储链接
Posted
技术标签:
【中文标题】共享主机中的 Laravel 存储链接【英文标题】:Laravel storage link in shared hosting 【发布时间】:2019-11-01 20:01:26 【问题描述】:我在共享主机上设置存储链接时遇到问题。 因此,我无法将任何图像上传到共享主机中的存储文件夹
【问题讨论】:
您最好的选择是使用file_put_contents()
将图像存储在您的公共目录中。
【参考方案1】:
您可以使用自定义方法将文件上传到您的公共目录,而不是使用 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
]);
【讨论】:
-您可以通过另一种方式解决它,在您的公共文件夹中创建一个 symlinkexample.php 文件并将文件路径运行到浏览器中。 -然后存储文件夹将被创建到公用文件夹中。文件夹路径将是 public/storage 并链接到您的公共文件夹。 -------------------------------- -------------------------------------------- 示例<?php $targetFolder = $_SERVER['DOCUMENT_ROOT'].'/storage/app/public'; $linkFolder = $_SERVER['DOCUMENT_ROOT'].'/public/storage'; symlink($targetFolder,$linkFolder); echo 'Symlink process successfully completed'; ?>
【参考方案2】:
在共享主机环境中使用 Laravel 可能不是最好的决定。现在可以以相同的价格获得许多不错的选择,即使您之前没有经验,您也只需要付出一些努力来了解如何使用它们。您可以使用 DigitalOcean、Linode、Vultr 或更多,它会为您节省大量时间。
如果您出于某种原因仍想使用共享主机并实际回答您的问题,您可以
调查以设置正确的符号链接(这种可能性现在几乎无处不在)它应该类似于ln -s /home/user/laravel/storage/app/public /home/user/public_html/storage
。 当然应该由你的路径来决定,具体取决于你的托管结构,你应该能够自己弄清楚。
尝试以某种解决方法来实施。例如,您可以尝试手动将文件从storage
放入storage/app/public
文件夹(您甚至可以稍后通过使用一些脚本来自动化它)。但是变通方法会产生新的变通方法,最好不要用错误的方法来做,而要使用简单而正确的方法,即使乍一看似乎很难。
【讨论】:
【参考方案3】:如果您执行 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';
-
访问网站 example.com/mysymlink.php
【讨论】:
【参考方案4】:只需创建一个路由并访问一次。
Route::get('generate', function ()
\Illuminate\Support\Facades\Artisan::call('storage:link');
echo 'ok';
);
【讨论】:
谢谢@Adrian,你是救命稻草? 我把这个放在哪里?在web.php
?我已经这样做了,但它似乎不起作用。
是的,在 routes/web.php 中。把它放在那里然后访问路由/generate,你应该看到'ok'。如果它不起作用还有其他问题..以上是关于共享主机中的 Laravel 存储链接的主要内容,如果未能解决你的问题,请参考以下文章
共享主机 Laravel 8 主机问题:Symlink 不工作