我发现这有点奇怪。 使用laravel Storage 外观时,如果我尝试移动一个文件:
然而,如果我尝试显式地复制文件,将其写入目标位置并删除原始文件,可以按照以下方式进行:
Storage::move ($source_file, $dest_file);
我遇到了以下错误:
rename(/source/file/name1.docx, /dest/file/name2.docx): Permission denied
然而,如果我尝试显式地复制文件,将其写入目标位置并删除原始文件,可以按照以下方式进行:
$fcontents = Storage::get ($source_file);
Storage::put ($dest_file, $fcontents, 'public');
Storage::delete ($source_file);
它运行得非常好。
我在一个nginx CentOS平台上运行Laravel。一个稍微有点复杂的因素是底层文件系统是挂载的Samba共享。但是,在命令行中这不会导致任何问题。
从shell命令,如果我执行一个移动操作(使用与运行nginx服务的用户相同的用户)mv /source/file/name1.docx /source/file/name2.docx
,它不会抱怨任何权限问题。
有人有线索吗?
编辑20/02/2018以添加更多信息
samba挂载在/etc/fstab
中如下:
//10.1.12.123;public /my/mount/point/public cifs credentials=/my/passfile,uid=1003,gid=1003 0 0
这个挂载工作正常,我可以在Bash shell中遍历文件系统。
@> ls -lFd /my/mount/point/public
drwxrwxrwx 11 webuser webgroup 0 Dec 4 13:30 /my/mount/point/public//
(我不确定上一行末尾的双斜杠是否有意义。)
顺便说一下,777权限显然是由挂载过程定义的。 我似乎没有改变它的能力。 我将寻求减少此特权作为离线活动,但出于解决此问题的目的,我打算证明文件系统级别的权限似乎不是问题的原因。