我正在尝试使用命令设置符号链接
ln -s /var/www/data/cache/widget/overlay/ /var/www/public_html/images/overlay
但它输出
ln: failed to create symbolic link '/var/www/public_html/images/overlay': Protocol error
主机操作系统是Windows 8,Docker镜像是Ubuntu。我相信这个问题可能与权限有关,因为当 Docker 映像启动时,/var/www/public_html
它被映射到 Windows 8 内的一个文件夹,/C/Users/Username/Documents/development/public_html
.但是,我可以通过文件夹内的命令行创建文件夹和文件public_html
,这与权限相悖。
我也找不到以管理员身份启动 Docker 来看看是否有帮助,因为它只是一个.sh
运行的脚本。
有其他人在创建符号链接时遇到“协议错误”吗?或者知道如何获得有关导致此问题的原因的更多信息吗?
编辑:此外,如果我尝试通过 PHP 将图像保存到public_html
文件夹或将文件复制到那里(再次通过 PHP),则会给出相同的“协议错误”消息。
答案1
那么/var/www/public_html
实际上是一个Windows文件夹,但/var/www/data
不是吗?您正在尝试创建从 Windows 目录到虚拟机中的 Ubuntu 目录的符号链接。 Windows 不可能支持这样的对象。
扩展上述内容:我想重点是 Windows 主机被设置为文件服务器,可供C:\Users\Tom_Hart\Documents\development\public_html
客户端使用 - 具体来说,提供对 Ubuntu 映像的读/写访问权限,以便 Ubuntu 可以读取、修改和创建对象在该 Windows 目录中及其下。但是,一般来说,服务器无法了解其客户端(如果 Google 开始索引,您会有什么感觉你的文件并在搜索结果中返回它们?)除非 Docker 镜像正在导出它是文件,Windows 无法访问/var/www/data
,甚至无法理解这样的路径;例如,
C:\Users\Tom_Hart\Documents> 记事本 /var/www/data/cache/widget/overlay/某物
不会起作用(它可能认为你的意思是C:\var\www\data\cache\...
)。 Windows 似乎很自然地会拒绝在 Windows 目录中创建指向 Windows 进程无法访问的资源的符号链接。