2015-03-30 6 views
6

Ich erstelle einen Dummy-Handler für .php und .html-Dateien namens helloworld. Der Handler enthält diese:AddHandler funktioniert nicht für .php-Dateien - Apache 2.4

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

ich dies in apache2.conf bekommen haben:

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

Der Handler "Hello World" wird für HTML-Dateien zu arbeiten, aber es ist nicht für die .php-Dateien arbeiten. Ich denke, es liegt hauptsächlich daran, dass der standardmäßige php-Handler den helloworld-Handler für .php-Dateien außer Kraft setzt. Wie kann ich den "helloworld" -Handler für .php-Dateien verwenden?

Wenn zusätzliche Informationen erforderlich sind, fragen Sie bitte.

+0

Ist das ähnlich: http://serverfault.com/questions/593064/php-files-not-working-with-addhandler-apache-2-4 – Twisty

+0

Ja es ist ähnlich. Aber da gibt es keine richtige Antwort. – vaibhav

Antwort

-3

Sie müssen Ihren Apache-Server nach dem Hinzufügen des Handlers neu starten.

Überprüfen Sie auch, ob die Erweiterung tatsächlich vom Server so interpretiert wird, wie Sie es möchten. Sie können diese Art von Informationen vom Systemadministrator Ihres Hosting-Providers überprüfen. Viele Systemadministratoren deaktivieren einige Funktionen, um die Sicherheit zu verbessern.

+0

Ich habe den Server neu gestartet, es funktioniert nicht. – vaibhav

4

Sie könnten SetHandler statt

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

Dies überschreibt den Standard-PHP-Handler. Wenn ich in halloworld_handler "return DECLINED" anstelle von "return OK" ausspreche, wertet der PHP-Standardhandler die php-Datei nicht aus. Kannst du mir bitte sagen, wie man den Standard-PHP-Handler nicht überschreibt? – vaibhav

+0

Ich habe noch nie versucht, aber ich sehe nicht, warum Sie nicht auch einen zweiten Handler hinzufügen können, um PHP-Dateien zu 'application/x-httpd-php5' zu schicken, der Standard-PHP-Handler – Machavity

+0

Ich habe den Bearbeitungsabschnitt in hinzugefügt die Frage. Könntest du damit helfen? – vaibhav

0

SetHandler entfernt alle zuvor eingestellten Handler zu versuchen. Um die Option für Ihren Handler zu erhalten zuerst, dann laufen die Standard-PHP-Handler ausgeführt wird, wenn der Handler kehrt SINKEN müssen Sie Ihr erstes setzen, fügen Sie dann PHP

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

Beachten Sie, dass dies den Effekt hat bisher keine Handler von Clearing-Setup für .html-Dateien

Sie können nur einen Handler für jeden Dateityp pro Anfrage verwenden. Wenn der PHP-Interpreter immer zuerst ausgeführt werden soll und der Handler dann als zweiter ausgeführt werden soll, kann die AddOutputFilter-Direktive berücksichtigt werden.

Die meisten Phasen werden vom ersten Modul beendet, das sie behandelt; Für die Protokollierung, die `` Fixups '' und die Überprüfung der Authentifizierung ohne Zugriff werden jedoch alle Handler immer ausgeführt (abgesehen von einem Fehler).

Apache API reference

AddOutputFilter docs

Verwandte Themen