Vagrant Homestead部署Laravel Backpack Pro遇storage:link协议错误求助
解决Vagrant Homestead下Laravel Backpack Pro的storage:link协议错误问题
问题重现
在Vagrant Homestead环境搭建Laravel Backpack Pro项目时,依赖安装后触发php artisan storage:link --quiet命令报错:
Script php artisan storage:link --quiet handling the post-install-cmd event returned with error code 1 symlink():protocol error
已尝试管理员身份运行Git Bash、手动执行artisan命令、确认storage权限为drwxrwxrwx 1 vagrant vagrant 0 Jan 22 07:22 storage,问题仍未解决。
可行解决方案
1. 开启Homestead共享文件夹的NFS挂载类型
Windows环境下,默认VirtualBox共享文件夹对symlink支持有限,修改Homestead.yaml的共享文件夹配置,添加type: "nfs":
folders: - map: ~/your-local-project-path to: /home/vagrant/your-vm-project-path type: "nfs" mount_options: ["nolock", "vers=3", "udp", "noatime", "actimeo=1"]
修改后执行命令重新加载环境:
vagrant reload --provision
2. 直接用系统命令创建软链接
跳过Laravel的artisan命令,通过vagrant ssh进入虚拟机后,用绝对路径创建symlink:
ln -s /home/vagrant/your-project/storage/app/public /home/vagrant/your-project/public/storage
替换命令中的项目路径为实际路径即可。
3. 关闭Windows快速启动
Windows快速启动会导致文件系统挂载异常,影响symlink创建:
- 打开「控制面板」→「电源选项」→「选择电源按钮的功能」
- 点击「更改当前不可用的设置」,取消勾选「启用快速启动(推荐)」
- 保存设置后重启电脑,再重新启动Homestead环境。
4. 绕过symlink,直接配置文件映射
如果以上方法都无效,可修改Laravel的文件系统配置,直接指向存储目录:
- 编辑
config/filesystems.php,修改public磁盘配置:
'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'), 'visibility' => 'public', ],
- 修改Nginx配置(Homestead的站点配置在
sites目录下),添加路径映射:
location /storage { alias /home/vagrant/your-project/storage/app/public; }
修改后执行vagrant reload --provision生效。
内容的提问来源于stack exchange,提问作者Yeo Bryan
相关产品推荐
相关产品推荐

