Laravel 5.3 storage:link -> symlink(): 协议错误

Posted

技术标签:

【中文标题】Laravel 5.3 storage:link -> symlink(): 协议错误【英文标题】:Laravel 5.3 storage:link -> symlink(): Protocol error 【发布时间】:2017-01-22 14:57:38 【问题描述】:

我正在尝试运行以下工匠命令:

php artisan storage:link

我收到此错误:

[ErrorException] symlink(): Protocol error

你能帮我解决这个问题吗。

这是我的设置:

Windows 10 使用 vagrant 和 Homestead (v0.5.0) 框 Ubuntu 16.04 LTS(GNU/Linux 4.4.0-22-generic x86_64) Laravel 框架版本 5.3.6 PHP 7.0

【问题讨论】:

Win 10 上的 Laravel 5.4 和 Homestead ((v5.4.0)) 上相同 对我来说,以管理员身份运行是不够的,我在尝试创建符号链接时仍然遇到“协议错误”。这是有效的:***.com/a/60741351/470749 【参考方案1】:

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

所以点击开始类型“cmd”,右键单击它选择“以管理员身份运行”。导航到您的项目,输入“vagrant up”。重试该命令。

Creating symbolic link on Homestead?

【讨论】:

在切换到“以管理员身份运行”之前,如果您已经启动,您将需要停止。 如果您不听@ShawnLindstrom 的建议,您将遇到以下错误消息:Vagrant up: There was an error while executing 'VBoxManage', a CLI used by Vagrant【参考方案2】:

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

php artisan storage:link 没问题。

【讨论】:

【参考方案3】:

您必须以 cmd 管理员身份登录,为此请单击 windows 键和 X。然后选择管理员系统符号。别忘了在另一个航站楼让她无所事事地停下来。

【讨论】:

【参考方案4】:

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

【讨论】:

感谢您的解决方案,但这对我不起作用。但就我而言,我在~/storage 中没有users 文件夹,在~/app/ 中没有storage 文件夹。我还不确定这是否会产生影响或是否存在。【参考方案5】:

尝试从主机运行php artisan storage:link。这样就可以了

【讨论】:

【参考方案6】:

就我而言,我以管理员身份运行 vagrant 并且正在工作。

不要忘记在其他机器上 vagrant halt 并以管理员身份开始新的。

php artisan storage:link

输出:

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

【讨论】:

【参考方案7】:

我花了很多时间解决这个问题,在我的例子中,我的项目是在 exFat 格式的存储驱动器中,在 Window 上创建符号链接的命令是mklink \J 这仅适用于 NTFS 格式的存储驱动器。

我不得不将我的项目迁移到 NTFS 格式的存储中。

我正在使用 Docket、Laravel 帆、Ubuntu 20.04 和 voyager(是 laravel 的管理面板)。

【讨论】:

【参考方案8】:

如果您尝试以管理员身份运行 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,再试一次,然后 woopti :)

现在把驱动改回redis

【讨论】:

【参考方案9】:

如果您在 Windows 上使用 Homestead:

以管理员身份打开cmd。

从终端转到 homestead 文件夹,首先,关闭并打开您的虚拟机:

vagrant halt

然后

vagrant up

输入您的项目文件夹:

vagrant ssh

cd path/to/yourproject

然后在那次运行之后:

php artisan storage:link

【讨论】:

以上是关于Laravel 5.3 storage:link -> symlink(): 协议错误的主要内容,如果未能解决你的问题,请参考以下文章

在输入'php artisan storage:link'命令后,如何使用Laravel链接存储文件夹在Heroku上显示图像?

将 Laravel 从 5.3 升级到 5.4

apache_conf 如何在Laravel(5.3)中包含流明(5.3)

laravel 无法打开输入文件:artisan (5.3)

Laravel 5.3 密码代理自定义

从 Laravel 5.3 升级到 Laravel 5.4 并且空字段转换为 NULL