2015-03-30 9 views
6

Sto creando un gestore fittizio per i file .php e .html chiamati helloworld. Il gestore contiene questo:AddHandler non funziona per i file .php - Apache 2.4

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

ho ottenuto questo in apache2.conf:

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

Il gestore "HelloWorld" sta lavorando per i file .html, ma non funziona per i file .php. Penso che sia soprattutto perché il gestore php predefinito sovrascrive il gestore di helloworld per i file .php. Come faccio a far funzionare il gestore "helloworld" per i file .php?

Se sono necessarie ulteriori informazioni, si prega di chiedere.

+0

È questo simile: http://serverfault.com/questions/593064/php-files-not-working-with-addhandler-apache-2-4 – Twisty

+0

Sì è simile. Ma non c'è una risposta corretta lì. – vaibhav

risposta

-3

È necessario riavviare il server Apache dopo aver aggiunto il gestore.

Controllare anche se l'estensione verrà effettivamente interpretata dal server nel modo in cui si desidera che funzioni. Puoi controllare questo tipo di informazioni dall'amministratore di sistema del tuo provider di hosting. Molti amministratori di sistema disabilitano alcune funzionalità per migliorare la sicurezza.

+0

Ho riavviato il server, non funziona. – vaibhav

4

si potrebbe desiderare di provare SetHandler invece

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

Sostituisce il gestore php predefinito. Se faccio "return DECLINED" invece di "return OK" in helloworld_handler, il gestore php predefinito non valuta il file php. Puoi dirmi come non ignorare il gestore php predefinito? – vaibhav

+0

Non ho mai provato, ma non vedo perché non è possibile aggiungere un secondo gestore per inviare file PHP a 'application/x-httpd-php5', il gestore PHP predefinito – Machavity

+0

Ho aggiunto la sezione di modifica in la domanda. Potresti aiutarci? – vaibhav

0

SetHandler consente di eliminare ogni gestore precedentemente impostata. Per ottenere l'opzione per il vostro gestore per eseguire prima quindi eseguire il gestore predefinito PHP quando i rendimenti dei gestori DECADENZA è necessario impostare la vostra prima, quindi aggiungere PHP

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

Si noti che questo ha l'effetto di eliminare gli eventuali gestori in precedenza l'installazione per file .html

È possibile avere un solo gestore per gestire qualsiasi tipo di file per richiesta. Se vuoi sempre eseguire prima l'interprete PHP e poi eseguire il secondo gestore, potresti prendere in considerazione la direttiva AddOutputFilter.

La maggior parte delle fasi è terminata dal primo modulo che le gestisce; tuttavia, per la registrazione, "correzioni" e controllo di autenticazione senza accesso, tutti i gestori eseguono sempre (salvo errore).

Apache API reference

AddOutputFilter docs