Laravel符号链接和cPanel

时间:2018-07-06 12:00:11

标签: laravel symlink

在Laravel网站上,我正在使用符号链接来存储和显示存储中的图像。

使用

php artisan storage:link

我创建了符号链接,每次上载新的新闻文章时,图像都会上传到主存储中,并使用符号链接将其设置到公用文件夹中,并且正确显示了图像。

到目前为止很好,但是当我创建网站的副本时,出现了问题...

当我使用cPanels File Manager创建网站的副本并移动到新位置时,公共目录中的存储符号链接已成为文件夹,而不是符号链接。 之后,当我尝试上传新的新闻文章时,我可以看到它是在主存储文件夹中上传的,而不是在公共/存储中,因此结果是图像不显示。那是因为它不再是一个符号链接,而现在是一个文件夹。

我已经使用SSH从公用目录中删除了存储文件夹,我再次使用了该命令

php artisan storage:link

并且我创建了新的新闻文章,并且图像可以正确显示,但是现在所有其他图像都消失了。

是否存在任何将重新生成路径的命令,因此所有其他图像将再次显示?

我正在使用Laravel 5.5

2 个答案:

答案 0 :(得分:4)

  1. 您可以使用另一种方法来解决它,以创建一个symlinkexample.php文件 进入您的公用文件夹,然后在浏览器中运行文件路径。
  2. 然后,存储文件夹将被创建到公用文件夹中。资料夹路径 将是公共/存储,并已链接到您的公共文件夹。

symlinkexample.php的以下代码:

<?php
    $targetFolder = $_SERVER['DOCUMENT_ROOT'].'/storage/app/public';
    $linkFolder = $_SERVER['DOCUMENT_ROOT'].'/public/storage';
    symlink($targetFolder,$linkFolder);
    echo 'Symlink process successfully completed';
?>

答案 1 :(得分:0)

尝试一下:

在route / web.php中添加以下代码:

Route::get('/storage', function(){
    \Artisan::call('storage:link');
    return "Se han vinculado las imágenes";
});