2011-10-24 55 views
6

我有一个Linux服务器与Appache作为Web服务器。在我的PHP脚本中,我使用0777模式制作目录。代码很简单如下:PHP的mkdir()权限

mkdir($path,0777) 

当我运行该脚本,去到我的服务器的文件管理器,文件夹是有,但分配给该文件夹的权限是0755。我想不通为什么正在发生!!当创建的文件夹的用户列已阿帕奇但权限是0755

回答

21

你应该与umask

$old = umask(0); 
mkdir($path,0777); 
umask($old); 
+0

的感谢!解决了这个问题...但仍然困惑为什么我的脚本能够创建777文件夹权限? – samach

+0

@Salmanmahmood:这是Linux中应该理解的东西http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html只是一个供您参考的链接 –

+3

通常,umask是022,这意味着忽略任何组或其他写入权限。所以如果请求的权限是0777,那么授予的权限是0777-022 = 0755。 – MetaEd

3

你可以试试:

chmod (string $filename , int $mode) 

看看是否能解决权限问题。

0

Apache的尝试可能没有权限改变这一点。你可以做的是。确保Apache与您当前的文件组在同一组中运行。然后apache将能够对该文件进行更改。你可以在这个apache配置中更改你的apache组。或者最简单的方法是将整个项目用户更改为apache用户。然后apache可以做出想要的改变。

转到文件从你的服务器,并输入ls -al并期待在用户和组

0

可能是你的umask:

<?php 
$old = umask(0); 
mkdir($dir,0777); 
mask($old); 
?>