我正在使用Laravel Homestead(Vagrant,Ubuntu)。我的主机是运行VirtualBox的Windows 10。
作为管理员(因为我已经看到很多回答说缺乏权限通常是人们在符号链接方面遇到问题的原因),所以我打开Git Bash并运行此命令:
vagrant@vboxHomestead:~/Code/myproject$ ls -lah /home/vagrant/foo/blah
total 0
drwxrwxrwx 1 vagrant vagrant 0 Mar 17 23:09 .
drwxrwxrwx 1 vagrant vagrant 0 Mar 17 22:36 ..
-rwxrwxrwx 1 vagrant vagrant 0 Mar 17 23:09 asdf.txt
vagrant@vboxHomestead:~/Code/myproject$ sudo ln -s /home/vagrant/foo/blah /home/vagrant/Code/myproject/storage/app/public/blah
ln: failed to create symbolic link '/home/vagrant/Code/myproject/storage/app/public/blah': Protocol error
是什么问题?它与folder mappings of Homestead有关系吗? 我如何实现我的目标?
((我的/home/vagrant/Code/
和/home/vagrant/foo/
映射到Windows计算机上的单独驱动器。)
P.S。在尝试上述步骤之前,我甚至删除了Homestead standard public symlink只是为了避免其他可能的麻烦。
P.P.S。我还尝试了在旋转框之前,在我的Homestead Vagrantfile的底部(最后一个this上方)附近添加end
:
config.vm.provider "virtualbox" do |v|
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end
[我注意到php artisan storage:link
现在也引起了“协议错误”。
因此,为了缩小问题的范围,我创建了一个全新的Homestead项目和框,并尝试在其中创建符号链接(包括php artisan storage:link
),但也出现了“协议错误”。
而且我非常小心地使用Git Bash(我的终端/命令行客户端)作为管理员,所以我已经在StackExchange上遵循了大多数答案的建议。
我还决定将我的Windows文件夹之一(我将Homestead映射到/home/vagrant/foo/
的那个文件夹移动到Homestead映射到/home/vagrant/Code/
的Windows文件夹中。*
我决定完全重新启动Windows 10。现在旋转了新的无用信息框之后,php artisan storage:link
并创建了我的其他符号链接。
*我不确定甚至不需要移动Windows文件夹。也许我可以将文件夹留在单独的Windows驱动器上。但是当时,我想尽量减少可能的并发症。