在laravel中存储说符号链接 - 没有这样的文件

Pro*_*reg 26 php laravel

我在public_html/app文件夹中的共享主机上部署了laravel app.这是公共文件夹中的所有内容.在/../../files我有其余的文件.当我做php artisan存储:我的控制台说文件夹中的链接

[ErrorException]                      
  symlink(): No such file or directory
Run Code Online (Sandbox Code Playgroud)

在localhost上,我将文件上传到storage/uploads文件夹.现在做什么?我试图改变链接,但没有什么对我有用......

Tur*_*nlı 119

  1. 转到/public目录并运行:

    rm storage

  2. 转到Laravel根目录并运行:

    php artisan storage:link


编辑于2018年5月1日

将laravel项目移动/复制到其他文件夹时会出现此问题.

存储链接仍然存在,从而导致异常错误.公共/存储文件夹存在并指向错误的位置,需要使用rm storage命令删除它.

php artisan storage:link在终端运行后,它将创建存储链接.

移动/复制/部署laravel时,每次都需要这样做!

  • 我不是OP,但这对我的项目很有帮助......非常感谢你! (3认同)
  • @Programmmereg您应该将此答案标记为正确答案,除非这对您不起作用.在这种情况下,您应该将另一个答案标记为正确或写下您自己的答案并将其标记为正确答案.无论如何,当信用到期时给予信用时,SO最有效.:) (3认同)

Gav*_*vin 15

以防万一你在这里仍然没有答案。

我遇到了麻烦,因为我在本地做了符号链接,然后将文件复制到服务器。为了使它工作,我做了以下事情:

$  cd path/to/laravel/root

// if public does not exist, first create it.
$  cd public

// if public/storage does not exist, first create it.
$  rm -r storage

$  cd ..

// Now it should work
$  php artisan storage:link 
Run Code Online (Sandbox Code Playgroud)


小智 8

通常在将Laravel应用移动到另一个目录后发生

实际的存储目录为“ / AppName / storage / app / public /”

Laravel创建一个指向实际存储目录“ / AppName / public / storage”的符号链接

其他意思

“ / AppName / public / storage”指向=>“ / AppName / storage / app / public /”

在将根应用程序目录更改为“ / AnotherAppName /”时,符号链接仍指向旧路径

“ / AnotherAppName / public / storage” =>“ / AppName / storage / app / public /”

我的解决方案是使用手动更新符号链接

ln -sfn /AnotherAppName/storage/app/public/ /AnotherAppName/public/storage
Run Code Online (Sandbox Code Playgroud)


小智 7

创建新的 php 文件并将以下代码放入该文件中:

<?php
symlink('/home/CpanelUser/storage/app/public', '/home/CpanelUserpublic_html/storage');
?>
Run Code Online (Sandbox Code Playgroud)

“CpanelUser”更改为您的 cpanel 用户名或主机名。

将此文件上传到站点执行文件的public_html文件夹(www),在浏览器中写入站点名称+此文件即可完成!

示例:我的文件名是 symlink.php,站点名称是 www.anysite.com 将 symlink.php 上传到主机中的 public_html 文件夹并在浏览器中获取网址

http://www.anysite.com/symlink.php

在 Laravel 的公共文件夹中执行此文件存储文件夹 creite 并链接到应用程序中的存储文件夹后。


小智 6

将来使用 Laravel Forge 的任何人。我在 Forge 中重命名域名时遇到此错误。

存储:链接错误

解决方案是进入公共目录并删除从原始域复制过来的现有符号链接。

存储的公共符号链接

删除此符号链接后,我能够php artisan storage:link再次运行并且运行正常。


Al-*_*min 5

使用共享托管时,我遇到相同的错误,我的公共目录移至public_html或其他目录,例如:根名称“ project”中的项目目录和根名称“ public_html”中的公共目录

当由Artisan :: call('storage:link')运行artisan命令时;然后面对这个错误。

解决方案:首先需要在app / Providers / AppServiceProvider注册方法中绑定您的公共目录

 $this->app->bind('path.public', function() {
    return base_path('../public_html');
 });
Run Code Online (Sandbox Code Playgroud)

现在运行命令,它的工作正常


小智 5

要在您的服务器上修复此错误,请将目录更改为 public 并删除存储文件夹的符号链接。

以下命令将帮助您从公共文件夹中删除符号链接:

cd public
rm storage
Run Code Online (Sandbox Code Playgroud)

删除符号链接后,使用以下命令将目录更改为主文件夹:

cd ..
Run Code Online (Sandbox Code Playgroud)

现在使用以下命令创建符号链接:

php artisan storage:link
Run Code Online (Sandbox Code Playgroud)

成功运行命令后,您应该收到以下消息

The [public/storage] directory has been linked.
Run Code Online (Sandbox Code Playgroud)

我希望这篇文章对你有帮助。

SYMLINK(): 没有这样的文件或目录 Laravel