2013-12-17 17 views
32

Witam wszystkich używam PHP na mojej stronie i Ubuntu Linux na moim systemie. Mam powyższy błąd w pliku error.log apache, nawet po prawidłowej konfiguracji wszystkiego. Zrobiłem wiele badań na ten temat, ale nie udało mi się rozwiązać problemu. Czy ktoś może mi pomóc w tym oddziale? Oto mój plik .htaccess w abc directory. Czy ktoś może mi pomóc w tym zakresie?Odmowa uprawnień: /var/www/abc/.htaccess pcfg_openfile: nie można sprawdzić pliku htaccess, upewnić się, że jest on czytelny?

# -FrontPage- 

IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti* 

<Limit GET POST> 
order deny,allow 
deny from all 
allow from all 
</Limit> 
<Limit PUT DELETE> 
order deny,allow 
deny from all 
</Limit> 
AuthName abc.org 
AuthUserFile /home/abc/public_html/_vti_pvt/service.pwd 
AuthGroupFile /home/abc/public_html/_vti_pvt/service.grp 
Options -Indexes 

RewriteEngine On 
RewriteRule ^alumni$ alumni.php 
RewriteRule ^student$ student.php 
RewriteRule ^view_alumni_article/view/([0-9]+)$ view_alumni_article.php?op=view&article_id=$1 
+1

Czy masz włączoną funkcję SELinux? – anubhava

Odpowiedz

85

Upewnij się, że plik .htaccess jest czytelny przez apache:

chmod 644 /var/www/abc/.htaccess 

i upewnij katalog to w czytelny i wykonywalny:

chmod 755 /var/www/abc/ 
+0

Mam ten sam problem i zmiana uprawnień, jak powyżej, sprawdziła się. Jednak nie jestem zadowolony z tego, że katalog główny to '755'. Kiedy robię "751", wydaje się działać. Czy to coś zafascynuje? –

+2

Sądzę, że istnieją wyjątki od tej pracy. Jeśli masz suphp i/lub suexec, możesz otrzymać dodatkowy błąd, jeśli twoje pliki są zapisywalne dla grup. Popraw mnie, jeśli się mylę. –

+0

+1 za krótkie i proste, ale najskuteczniejsze rozwiązanie. Całkowicie spieprzyłem się z błędem, ale twoje rozwiązanie kołysze! –

22

miałem takie same problem, kiedy zmieniłem katalog domowy jednego użytku. W moim przypadku było to spowodowane selinux. Użyłem poniższego, aby naprawić problem:

+4

Miałem ten sam problem i zamiast wyłączać selinux znalazłem, że 'sudo restorecon -R ' wystarczało, aby rozwiązać problem. – Segfault

+0

Rozwiązanie Anessh działało dla mnie ... ponieważ wszystkie pozostałe rozwiązania opierają się na tym, że 'selinux' NIE jest aktywny - problemy z uprawnieniami są po prostu problemami z uprawnieniami. ale te rozwiązania są bez znaczenia, jeśli selinux blokuje wszystko (podobnie jak w 'restorecon'). Problemy na moim serwerze sieciowym CentOS 6 LAN zostały rozwiązane przez wyłączenie 'selinux' - aż do momentu awarii zasilania i ujawnione ustawienia selinux nie zostały zapisane bez edycji pliku conf.aby zapisać ustawienia selinuksa podczas restartu 'vi/etc/sysconfig/selinux' znajdź i zmień linię' SELINUX = enabled' na 'SELINUX = disabled' uruchom ponownie twój ** MASZYNA ** – aequalsb

+0

Rozwiązałem mój problem. – YumYumYum

2

Jeśli trafi na arenę selinux, masz o wiele bardziej skomplikowany problem. To nie jest dobry pomysł, aby usunąć ochronę selinux, ale aby ją objąć i użyć narzędzi, które zostały zaprojektowane do zarządzania nią.

Jeśli wyświetlasz treść z numeru /var/www/abc, możesz sprawdzić uprawnienia selinux za pomocą Z dołączonej do zwykłej komendy ls -l. tj. ls -laZ da kontekst selinux.

Aby dodać katalog obsługiwany przez selinux, można użyć następującej komendy: semanage. Spowoduje to zmianę etykiety na /var/www/abc do httpd_sys_content_t

semanage fcontext -a -t httpd_sys_content_t /var/www/abc 

tym aktualizuje etykietę /var/www/abc

restorecon /var/www/abc 

Ta odpowiedź została pobrana z unixmen i zmodyfikowany, aby dopasować to pytanie. Szukałem tej odpowiedzi przez jakiś czas i wreszcie znalazłem ją tak, jakbym potrzebowała się gdzieś podzielić. Mam nadzieję, że to komuś pomaga.