Bonjour,
J'ai créé un compte sur un serveur mutualisé d'un hébergeur.
Je n'ai donc accès qu'a mon espace utilisateur, disons user pour fixer les idées.
Sous ce compte j'ai installé un certain nombre de modules perl, dans : user/perl5/lib/perl5.
J'ai créé un fichier .bash_profile contenant les lignes :
Ceci me permet, lorsque je me connecte à mon compte utilisateur en ssh, de pouvoir exécuter des scripts perl utilisant les modules installés précédemment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib` export MANPATH=$HOME/perl5/man:$MANPATH
Ainsi, si j'exécute la ligne perl -e 'print for @INC', je constate que le chemin /home/user/perl5/lib/perl5 est bien présent, parce que le fichier .bash_profile est exécuté lors de la connexion.
Dans cet espace utilisateur, j'ai placé une application web qui utilise des modules perl installés localement donc.
Cet hébergeur me permet d'utiliser un serveur apache pour cette appli web, moyennant l'accès à un fichier de configuration me permettant d'inclure des directives globales et des directives relatives aux virtual hosts.
Dans les directives globales, je place la ligne suivante :
qui indique l'endroit où j'ai placé le module apache mod_perl, permettant l'exécution de scripts perl.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 LoadModule perl_module /home/user/modules/mod_perl.so
Dans les directives relatives aux virtuals hosts, je place la section suivante :
Mais lorsque j'essaie de me connecter au site, j'obtiens le message suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <Location /> SetEnv PERL5LIB /home/user/perl5/lib/perl5 SetHandler perl-script PerlResponseHandler Plack::Handler::Apache2 PerlSetVar psgi_app /home/user/www/MyApp1/bin/app.psgi </Location>
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
Et le fichier error_log contient le message :
failed to resolve handler `Plack::Handler::Apache2': Can't locate Plack/Handler/Apache2.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl . /home/user/admin/apache) at (eval 2) line 3.\n
montrant bien que le chemin vers les modules perl installés sous le compte utilisateur n'est pas pris en compte (malgré la directive SetEnv), et par conséquent l'application n'est pas exécutée.
En fait il ne s'agit pas exactement d'un problème lié à apache. C'est le compte root qui ne contient pas le chemin lié aux modules perl installés sous le compte utilisateur. Il s'agit plutôt d'un problème de configuration de l'environnement perl.
Comment peut-on résoudre ce problème ?
Merci à tous ceux qui me permettront d'y voir plus clair.
Partager