2013-07-03 27 views
6

Mam 777 wszystkich plików na moim serwerze. PHP 5.4 (no safe_mode)mkdir(): Odmowa uprawnień

Strona działa na innych serwerach. To Yii framework

mkdir(): Permission denied 

/var/www/html/project/framework/web/CAssetManager.php(225) 

213    return $this->_published[$path]; 
214   elseif(($src=realpath($path))!==false) 
215   { 
216    $dir=$this->generatePath($src,$hashByName); 
217    $dstDir=$this->getBasePath().DIRECTORY_SEPARATOR.$dir; 
218    if(is_file($src)) 
219    { 
220     $fileName=basename($src); 
221     $dstFile=$dstDir.DIRECTORY_SEPARATOR.$fileName; 
222 
223     if(!is_dir($dstDir)) 
224     { 
225      mkdir($dstDir,$this->newDirMode,true); 
226      chmod($dstDir,$this->newDirMode); 
227     } 

Tutaj ls -l po chown, nie pomaga

drwsrwsrwx. 2 apache apache 4096 июля 3 16:44 assets 
drwxrwxrwx. 5 apache apache 4096 июня 10 14:52 bootstrap 
drwxrwxrwx. 19 apache apache 4096 июля 3 16:04 framework 
-rwxrwxrwx. 1 apache apache  326 июля 3 16:42 index.php 
drwxrwxrwx. 10 apache apache 4096 июля 3 16:04 protected 
drwxrwxrwx. 3 apache apache 4096 июня 20 13:28 soap 
drwxrwxrwx. 3 apache apache 4096 июля 3 16:04 themes 
+2

Potrzebujesz 777 w reżnie, którą próbujesz zrobić w reżimie, lub zmienić właściciela. –

+1

Powinieneś także użyć ósemkowej reprezentacji dla uprawnień do plików i katalogów. '0777' zamiast' 777'. –

+0

To framework Yii. Nie mogę zmienić tego kodu. All/www/have 777 – awMinor

Odpowiedz

1

Sprawdź SELinux i wyłącz to ... Teraz działa!

+1

To nie daje odpowiedzi na pytanie: Aby krytykować lub poprosić o wyjaśnienie od autora, zostaw komentarz pod swoim postem - zawsze możesz komentować swoje posty, a kiedy już to zrobisz wystarczająca [reputacja] (http://stackoverflow.com/help/whats-reputation) będziesz mógł [komentować dowolny post] (http://stackoverflow.com/help/privileges/comment). –

+1

Proszę użyć edytuj link na swoim pytaniu, aby dodać dodatkowe informacje Przycisk "Opublikuj odpowiedź" powinien być użyty tylko w celu uzyskania pełnych odpowiedzi na pytanie: –

4

Upewnij się, że:

  • katalogu stron jest własnością użytkownika apache. ("ls -al" powie ci)
  • katalog nadrzędny, w którym chcesz utworzyć, jest również własnością tego użytkownika.
  • katalog nadrzędny nie jest uchwyt, w którym nie masz uprawnień do zapisu
  • ścieżka chcesz utworzyć jest prawidłowe (var_dump ($ dstDir) powie)
  • $ this-> newDirMode jest zawiera poprawną wartość uprawnień. (Jeśli w systemie Windows zostanie zignorowany)

Jeśli nie ma problemu i nadal nie działa, chciałbym zrobić:

  • zrobić sobie użytkownik apache i starają się go stworzyć ręcznie ("sudo -u apache" jeśli twoja nazwa użytkownika to apache)
  • spróbuj pomijać trzeci parametr 'true' w "mkdir ($ dstDir, $ this-> newDirMode, true);" i utworzyć wszystkie katalogi po kolejnym
  • jednego wglądu dzienniki ("/ var/log/apache" jest twoim przyjacielem)

Hope this helps.

+0

to wszystko nie pomaga – awMinor

+0

log nie mają nic. – awMinor

+0

Co użytkownik jest zdefiniowany w twoim /etc/apache2/apache2.conf? (Wyszukaj "Użytkownik", a następnie "Grupa") – cb0

3

SELinux może być problem. Spróbuj wyłączyć ręcznie:

setenforce 0 
1

SELinux był winowajcą mojej konfiguracji. Dzięki za przypomnienie!

+0

Prawa i własność również stanowiły problem. n: chown -R apache basic/ – pawr

+0

chgrp -R apache basic/ – pawr

+0

chmod 755 uprawnień dla twojej webroot rekurencyjnie również dostałem pracę kopalni, po której następuje 'setenforce 0' i zawsze pomocna 'usługa restartu httpd na wszelki wypadek =) dziękuję wszyscy za pomoc w tej sprawie. Czekamy na grę z Yii 2.0 – pawr

Powiązane problemy