2011-10-24 87 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); 
?>