我无法理解为什么我必须使用chmod才能获得正确的权限..文件是成功创建的,但是我指定的是0755而不是0775 mkdir.
(http://php.net/manual/en/function.mkdir.php)
我必须做chmod后mkdir设置正确的权限.
php.ini中的安全模式已关闭,该文件夹属于php的组和所有者(www-data)
这不起作用:
if(!is_dir("/var/www/customers/$username/$project_name"))
{
mkdir("/var/www/customers/$username/$project_name",0775);
}
Run Code Online (Sandbox Code Playgroud)
但这样做:
if(!is_dir("/var/www/customers/$username/$project_name"))
{
mkdir("/var/www/customers/$username/$project_name");
chmod("/var/www/customers/$username/$project_name",0775);
}
Run Code Online (Sandbox Code Playgroud)
con*_*fiq 41
是的,这是因为umask ...
来自docs的评论:http://php.net/manual/en/function.mkdir.php
您可能会注意到使用此代码创建新目录时:
mkdir($ dir,0777);
创建的文件夹实际上具有0755的权限,而不是指定的0777.为什么要问这个?因为umask():http://php.net/manual/en/function.umask.php
至少在我的设置中,umask的默认值是18.这是22八进制,或0022.这意味着当你使用mkdir()将创建的文件夹CHMOD设置为0777时,PHP取0777并减去umask的当前值,在我们的情况下0022,所以结果是0755 - 这可能不是你想要的.
这个"修复"很简单,包括这一行:
$ old_umask = umask(0);
在创建具有mkdir()的文件夹之前,将您放入的实际值用作CHMOD.如果您想在完成后将umask恢复为原始值,请使用以下命令:
的umask($ old_umask);