2009-01-13 11 views
2

Ok, donc j'essaie de configurer un Dispatcher avec mod_perl et je ne sais pas vraiment ce que je fais de mal. Je suis assez positif que le problème est avec ma configuration mod_perl. Voici ce que je pense est pertinent:Comment faire fonctionner CGI :: Application :: Dispatch avec mod_perl?

Apache Directory Config

<Directory "C:/Documents and Settings/frew/My Documents/acd"> 
    SetHandler perl-script 
    PerlHandler ACD::Dispatch 
    Options Indexes FollowSymLinks ExecCGI 
    AllowOverride None 
    Order allow,deny 
    Allow from all 
    DirectoryIndex Default.html 
</Directory> 

Remarque: ACD :: Dispatch est DAA/ACD.

ACD :: Dispatch

package ACD::Dispatch; 
use base 'CGI::Application::Dispatch'; 
sub dispatch_args { 
    return { 
     prefix => 'ACD', 
     table => [ 
     ''    => { app => 'Controller', rm => 'awesome' }, 
     ':app/:rm'  => { }, 
     ], 
    }; 
} 

Et probablement le plus important, les erreurs Apache:

[Mon Jan 12 17:42:08 2009] [error] [client 10.6.1.73] failed to resolve handler `ACD::Dispatch': Can't locate ACD/Dispatch.pm in @INC (@INC contains: C:/usr/site/lib C:/usr/lib . C:/Program Files/Apache Software Foundation/Apache2.2) at (eval 3) line 3.\n 

Merci pour toute aide!

Mise à jour: je devais ajouter à ma config Apache:

<Perl> 
    use lib '/path/to/acd'; 
</Perl> 

Répondre

4

Eh bien, basé sur le message d'erreur:

ACD :: Dispatch: Impossible de localiser ACD /Dispatch.pm dans @INC (@INC contient: C:/usr/site/lib C:/usr/lib C:/Program Files/Logiciel Apache Foundation/Apache2.2

et le fait que vous avez dit:

ACD :: Dispatch est DAA/ACD.

Il semble que vous deviez placer le répertoire "acd" dans le chemin @INC, en utilisant son chemin d'accès absolu.

Bien que vous pourriez penser '.' est sur @INC et cela devrait être votre répertoire acd, je ne le fais pas, sous mod_perl. Voir, par exemple, this discussion.

Questions connexes