Laravel 5.3存储:链接 -> symlink():协议错误

29
我试图运行以下artisan命令:
php artisan storage:link
我收到了以下错误:
[ErrorException] symlink(): 协议错误
你能帮我解决一下吗?
这是我的设置:
  • 使用 Homestead (v0.5.0) 虚拟机的 Windows 10
  • Ubuntu 16.04 LTS (GNU/Linux 4.4.0-22-generic x86_64)
  • Laravel 框架版本为 5.3.6
  • PHP 7.0

在Windows 10上,Laravel 5.4和Homestead(v5.4.0)相同。 - Yevgeniy Afanasyev
对我来说,以管理员身份运行还不够,当我尝试创建符号链接时仍然会出现“协议错误”。以下是有效的方法:https://stackoverflow.com/a/60741351/470749 - Ryan
10个回答

78

你的问题可能是你必须以系统管理员身份启动你的vagrant box。

因此,打开开始菜单,输入"cmd",右键选择“以管理员身份运行”。进入你的项目目录,输入"vagrant up"。然后再尝试此命令。

在Homestead上创建符号链接?


7
如果您已经启动,请在切换到“以管理员身份运行”之前使用“vagrant halt”。该操作是为了让虚拟机关机。 - Shawn Lindstrom
2
如果您不听从@ShawnLindstrom的建议,您将会遇到以下错误信息:Vagrant up: There was an error while executing 'VBoxManage', a CLI used by Vagrant - Chad

5

首先使用vagrant halt命令关闭Vagrant,然后以管理员身份运行cmd,进入您的homestead文件夹,使用vagrant up启动Vagrant,然后您就可以运行php artisan storage:link了。 对我来说,它起作用了 :)


1
谢谢您提供的解决方案,但是对我并没有起作用。在我的情况下,~/storage 中没有 users 文件夹或者 ~/app/ 中没有 storage 文件夹。我还不确定这是否有所区别或者应该存在。 - Spencer Hill

2

enter image description here

以超级管理员身份运行 cmd。

php artisan storage:link 已经完成。


2
尝试从主机运行php artisan storage:link。这样就可以了。原始答案是"最初的回答"。

1
在我的情况下,我以管理员身份运行vagrant,并且它可以正常工作。
不要忘记在其他机器上停止vagrant并以管理员身份启动新的。
php artisan storage:link

输出:

[/home/vagrant/code/public/storage] 链接已连接到 [/home/vagrant/code/storage/app/public]。
链接已创建。


0

您必须以cmd管理员身份登录,方法是点击Windows键和X键。然后选择管理员系统符号。不要忘记在另一个终端上执行vagrant halt命令。


0

enter image description here

我花了很多时间解决这个问题,在我的情况下,我的项目存储在一个使用exFat格式的驱动器中,在Windows上创建符号链接的命令是
mklink \J,但这只适用于使用NTFS格式的存储驱动器。

enter image description here

我必须将我的项目迁移到NTFS格式的存储中。

enter image description here

我正在使用 Docket、Laravel Sail、Ubuntu 20.04 和 Voyager(一个 Laravel 的管理面板)。

enter image description here


0

这个解决方案对我有效: 在电脑上更新你的PHP(即从php.net下载) 然后以管理员身份打开cmd cd homestead -> vagrant up -> vagrant ssh -> cd code -> cd "your-APP" sudo apt update -> sudo apt upgrade exit (返回cmd) cd code -> cd "your-APP" -> php artisan storage:link


0
如果您在尝试以管理员身份运行CMD后仍然遇到此问题,但没有成功。
很可能是您使用了predis/redis,请转到您的.env文件并放置标准驱动程序。
BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DRIVER=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

现在停止你的vagrant/homestead虚拟机,运行homestead/vagrant up,再试一次,就可以成功啦 :)

现在将驱动程序改回redis


-1
如果您在Windows上使用Homestead:
以管理员身份打开cmd。
从终端转到homestead文件夹,首先关闭然后打开您的虚拟机:
vagrant halt

然后

vagrant up

输入您的项目文件夹:

vagrant ssh

cd path/to/yourproject

然后运行:

php artisan storage:link

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接