2011-10-24 19 views
6

Mam serwer Linux z appache jako serwer WWW. W moim skrypcie PHP tworzę katalogi w trybie 0777. kod jest całkiem prosty sposób następujący:Uprawnienia PHP mkdir()

mkdir($path,0777) 

kiedy uruchomić ten skrypt i iść do mojego menedżera plików serwera, folder jest tam, ale uprawnienie przypisane do tego folderu to 0755. Nie mogę zrozumieć, dlaczego to dzieje się!! Gdy folder jest tworzony kolumna użytkownik apache w nim jednak uprawnienie to 0755.

Odpowiedz

21

Należy starać się umask

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

dzięki! rozwiązany problem ... ale nadal mylić, dlaczego mój skrypt nie był w stanie utworzyć uprawnienia do folderu 777? – samach

+0

@Salmanmahmood: To jest coś, co powinno być zrozumiałe w Linuksie http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html Link do Twojego numeru referencyjnego –

+3

Zwykle umask to 022, co oznacza zignorowanie dowolnej grupy lub innych uprawnień do zapisu. Więc jeśli żądane uprawnienia wynoszą 0777, to przyznane uprawnienia wynoszą 0777 - 022 = 0755. – MetaEd

3

Można spróbować:

chmod (string $filename , int $mode) 

sprawdzić, czy można rozwiązać problem uprawnienia.

0

Apache może nie masz uprawnień, aby to zmienić. Możesz zrobić tylko to. Upewnij się, że apache działa w tej samej grupie co bieżąca grupa plików. Wtedy apache będzie mógł dokonać zmian w tym pliku. Możesz zmienić grupę apache w tej konfiguracji apache. Lub najprostszym sposobem jest zmiana całego użytkownika projektu na użytkownika apache. Następnie apache może wprowadzić zmiany, które chce.

przejść do pliku z serwera i typu ls -al i spojrzeć na użytkownika i grupy

0

może być Twoja umask:

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