2015-03-30 29 views
6

Tworzę obojętny program obsługi plików .php i .html o nazwie helloworld. Moduł obsługi zawiera to:AddHandler nie działa dla plików .php - Apache 2.4

static int helloworld_handler(request_rec *r){ 
    ap_rprintf(r, "hello world!"); 
    return OK; 
} 

Mam to w apache2.conf:

<Directory /var/www/html> 
AddHandler helloworld .php .html 
</Directory> 

handler "helloworld" pracuje dla plików .html, ale to nie działa dla plików .php. Myślę, że dzieje się tak głównie dlatego, że domyślny handler php zastępuje program obsługi helloworld dla plików .php. Jak wykonać obsługę "helloworld" dla plików .php?

W razie dodatkowych pytań prosimy o kontakt.

+0

Jest to podobne: http://serverfault.com/questions/593064/php-files-not-working-with-addhandler-apache-2-4 – Twisty

+0

Tak to jest podobne. Ale nie ma tam poprawnej odpowiedzi. – vaibhav

Odpowiedz

-3

Musisz ponownie uruchomić serwer Apache po dodaniu modułu obsługi.

Sprawdź również, czy rozszerzenie będzie interpretowane przez serwer tak, jak chcesz, aby działało. Możesz sprawdzić tego rodzaju informacje od administratora systemu twojego dostawcy hostingu. Wielu sysadminów wyłącza niektóre funkcje w celu poprawy bezpieczeństwa.

+0

Uruchomiłem ponownie serwer, to nie działa. – vaibhav

4

Możecie spróbować SetHandler zamiast

<FilesMatch \.php$> 
    SetHandler helloworld 
</FilesMatch> 
+0

Powoduje to przesłonięcie domyślnego programu obsługi php. Jeśli wykonam polecenie "return DECLINED" zamiast "return OK" w helloworld_handler, domyślny program obsługi php nie oceni pliku php. Czy możesz mi powiedzieć, jak nie zastąpić domyślnego programu obsługi php? – vaibhav

+0

Nigdy nie próbowałem, ale nie widzę powodu, dla którego nie mógłbyś dodać drugiej funkcji do przesyłania plików PHP do 'application/x-httpd-php5', domyślnego handler'a PHP – Machavity

+0

Dodałem sekcję edycji w pytanie. Czy możesz w tym pomóc? – vaibhav

0

SetHandler usunie wszelkie uprzednio ustawioną obsługi. Aby uzyskać rozwiązaniem dla obsługi, aby uruchomić pierwszy następnie uruchomić domyślny PHP obsługi, gdy powraca Wózek spadku trzeba ustawić je najpierw, a następnie dodać PHP

<FilesMatch \.html$> 
    SetHandler helloworld .html 
</FilesMatch> 
<FilesMatch \.php$> 
    SetHandler helloworld .php 
    AddHandler php5-script .php 
</FilesMatch> 

Zauważ, że ma to wpływ rozliczeń żadnych teleskopowe wcześniej setup dla plików .html

Możesz mieć tylko jeden uchwyt obsługi dowolnego typu pliku na żądanie. Jeśli zawsze chcesz, aby interpreter PHP uruchamiał się jako pierwszy, a następnie twój program obsługi mógł działać jako drugi, możesz wziąć pod uwagę dyrektywę AddOutputFilter.

Większość faz jest kończona przez pierwszy moduł, który je obsługuje; jednak w przypadku rejestrowania, "naprawiania" i sprawdzania uwierzytelniania bez dostępu wszystkie procedury obsługi zawsze działają (z pominięciem błędu).

Apache API reference

AddOutputFilter docs