ssh2_sftp_mkdir($sftp, '/home/site',0774);
我正在使用上面的方法远程创建一个文件夹,但是该文件夹不是设置为具有权限774
的文件夹,而是被设置为754
,这意味着该组无法写入该文件夹。
该模式也被当前的umask修改,您可以使用umask()进行更改。
正在发生的事情是,由于某些原因,PHP函数ssh2_sftp_mkdir
受系统ssh2_sftp_mkdir
设置的影响,并且该问题没有记录。
例如,如果您这样做
umask
并且系统上的ssh2_sftp_mkdir($sftp, '/home/site',0774);
设置为umask
(因为在大多数Linux发行版中默认设置),您最终会获得具有权限022
(site
)的已创建目录774
可以通过使用函数drwxrwxr--
从php更改umask
,但是如文档中所述,由于多线程Web服务器中意外行为的可能性,因此不建议这样做。
例如,要了解什么是umask及其在Debian Linux中的工作方式,请参考umask
或Debian Wiki - Permissions - The defaults for new files and directories。>>
我对处理这种情况的建议是在创建目录/文件时尽最大的努力来设置权限,并且创建后,请确保使用Arch Linux Wiki - Umask功能设置适当的权限
。