PHP ssh2_sftp_mkdir错误创建权限

问题描述 投票:0回答:2
ssh2_sftp_mkdir($sftp, '/home/site',0774);

我正在使用上面的方法远程创建一个文件夹,但是该文件夹不是设置为具有权限774的文件夹,而是被设置为754,这意味着该组无法写入该文件夹。

php linux file-permissions umask
2个回答
0
投票

该模式也被当前的umask修改,您可以使用umask()进行更改。


0
投票

正在发生的事情是,由于某些原因,PHP函数ssh2_sftp_mkdir受系统ssh2_sftp_mkdir设置的影响,并且该问题没有记录。

例如,如果您这样做

umask

并且系统上的ssh2_sftp_mkdir($sftp, '/home/site',0774); 设置为umask(因为在大多数Linux发行版中默认设置),您最终会获得具有权限022site)的已创建目录774

可以通过使用函数drwxrwxr--从php更改umask,但是如文档中所述,由于多线程Web服务器中意外行为的可能性,因此不建议这样做。

例如,要了解什么是umask及其在Debian Linux中的工作方式,请参考umaskDebian Wiki - Permissions - The defaults for new files and directories。>>

我对处理这种情况的建议是在创建目录/文件时尽最大的努力来设置权限,并且创建后,请确保使用Arch Linux Wiki - Umask功能设置适当的权限

© www.soinside.com 2019 - 2024. All rights reserved.