Configurer Apache pour PERL
Je voudrais utiliser Perl sur mon serveur Linux (mandriva freee 2007)
Par la commande perl -v j'ai bien perl5.8.8 installé
J'ai trouvé un site qui explique très bien comment configurer Apache pour mod_perl, mais où je bloque c'est lorsqu'il faut rajouter dans httpd.cong:
LoadModule perl_module libexec/libperl.so
Déja libperl.so n'etait pas à cet endroit là, je l'y ai déplacé , lorsque je restart httpd , il le trouve bien, mais j'ai l'erreur perl_module .... API inexistant dans libperl.so. [ECHEC]
J'ai essayé par urpme de désinstaller perl => impossible !
Avez vous une solution ?
Merci
Configuration: Windows XP Firefox 2.0.0.4
30 réponses
Problème rencontré lors de l’utilisation de mod_perl sur Mandriva 2007 : LoadModule perl_module et l’erreur API inexistante dans libperl.so entravent une configuration Apache initiale correcte fiable. Plusieurs solutions ont été évoquées : confirmer le chemin réel de libperl.so et adapter LoadModule, vérifier les modules chargés avec httpd -l et DUMP_MODULES, puis envisager une réinstallation d’Apache et de mod_perl si nécessaire. En cas de test sur des répertoires non standard, certains conseillent d’utiliser DocumentRoot ou UserDir et des hôtes virtuels pour éviter les conflits avec Apache. D’autres propositions ajoutent HTML::Mason comme alternative pour le développement web Perl, permettant d’intégrer des composants côté serveur sans dépendance directe à mod_perl et simplifiant les tests locaux.
-
J'ai essaye en passant mon script de test sous var/www comme bob031, mais le résultat est le même.
Toujours la même erreur Apache/Registry.pm introuvable dans @INC
Avec un lien symbolique c'est idem.
Alors je vais faire comme préconisé par lami20j désinstaller Apache par urpme et réinstaller par urpmi.
Cette commande sera peut être plus conforme que lorsque l'install est faire par Mandriva.
A plus tard;
Et merci -
ModérateurSalut,
alors fait une réinstallation d'apache et mod_perl
si tu veux utiliser /home/alain/sites pour des tests tu peux :
- si tu as un seul site à tester tu n'as qu'a modifier le fichier de configurationDocumentRoot "/home/alain/sites" <Directory "/home/alain/sites"> order allow,deny allow from all </Directory>
pour le même site tu peux utiliser le répertoire d'un utilisateur avec la directive UserDir
Si tu as plusierus sites à tester alors regarde du côté hôtes virtuels -
Je n'ai pas trouvé de commande pour ajouter au @INC (un peu comme pour le PATH)
Mais en fin de semaine, je vais essayer en faisant un lien symbolique entre le rep ou j'ai trouvé le fichier et un des rep de @INC
J'avais fait l'installation par l'interface graphique mandriva.
Je pense que par urpmi cela aurait été mieux ( dans les bons répertoires) ????-
Salut Alain42,
J'ai suivi ton problème depuis le début (sans y avoir participé pour l'instant).
D'après ce que j'ai lu mod-perl est installé puisque tu as apache_mod_perl.
J'ai une mandriva spring 2007.1, j'ai testé un script perl ("hello.pl") pour voir si ça fonctionnait chez moi.
Sans toucher à aucun fichier de configuration et en plaçant mon script "hello.pl" dans /var/www/perl et cela fonctionne.
[redfox@localhost perl]$ cd /var/www/perl/
[redfox@localhost perl]$ ls -l
total 5
-rwxr-xr-x 1 root root 1075 avr 10 15:14 apache-mod_perl-testscript.pl*
-rwxr-xr-x 1 root root 73 jun 28 14:54 hello.pl*
-rwxr-xr-x 1 root root 1075 mar 10 18:34 test.pl*
[redfox@localhost perl]$
si ça peut t'aider ...
:-)) -
Merci,
Je vais essayer sous var/www
Mais j'aurais voulu que cela fonctionne sous /home/alain/sites car j'utilse mon seveur Linux pour tester en local plusieurs sites et je les met sous ces rep en /home.
Mais j'ai l'impression que Apache-mod_perl n'a pas été installé correctement, les fichiers de config ne sont pas aux endroits ou les fichiers perls les "attendent".
-
-
Lorsque je remet les deux lignes j'ai comme réponse:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
et dans les logs:
[Mon Jul 02 13:37:47 2007] [notice] Apache/2.2.3 (Mandriva Linux/PREFORK-1mdv2007.0) configured -- resuming normal operations
[Mon Jul 02 13:37:48 2007] [error] [client 192.168.0.5] failed to resolve handler `Apache::Registry': Can't locate Apache/Registry.pm in @INC (@INC contains: /usr/lib/perl5/5.8.8/i386-linux /usr/lib/perl5/5.8.8 /usr/lib/perl5/site_perl/5.8.8/i386-linux /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.7/i386-linux /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl . /etc/httpd) at (eval 2) line 3.\n
[Mon Jul 02 13:37:48 2007] [error] [client 192.168.0.5] failed to resolve handler `Apache::Registry': Can't locate Apache/Registry.pm in @INC (@INC contains: /usr/lib/perl5/5.8.8/i386-linux /usr/lib/perl5/5.8.8 /usr/lib/perl5/site_perl/5.8.8/i386-linux /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.7/i386-linux /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl . /etc/httpd) at (eval 3) line 3.\n
unn find / -name 'Registry.pm' me le trouve en:
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux/ModPerl/Registry.pm
il a-t-il une commande pour intégrer ce chemin dans @INC ??? -
ModérateurSalut,
empêchent le serveur de fonctionner, mes sites ne fonctionnent plus
affiche les erreurs (voir les logs) -
Bonjour lami20j,
Je viens de faire l'essai
j'ai suprimé l'include du fichier 75_mod_perl.conf
et rajouté dans http.conf:
Alias /perl/ /home/alain/sites/perl/
SetHandler perl-script
PerlHandler Apache::Registry
mais les deux lignes :
SetHandler perl-script
PerlHandler Apache::Registry
empêchent le serveur de fonctionner, mes sites ne fonctionnent plus
j'ai mis ces deux lignes entre
<Location /perl/*.pl>
</Location>
Le serveur refonctionne mais mon fichier d'essai prog1.pl n'est toujours pas reconnu comme script perl.
Aurais tu une idée ?
merci -
Merci,
Je vais essayer mais seulement en fin de semaine, là je dois partir -
ModérateurSalut,
laisse tombé le fichier 75_mod_perl.conf
mets la ligne avec include en commentaire#Include 75_mod_perl.conf
dans ton httpd.conf écritAlias /perl /home/alain/sites/perl/ SetHandler perl-script PerlHandler Apache::Registry
Redémarre le serveur et fait un test -
Bon avec LoadModule ....... apache redémare? mais mon script perl ne fonctionne pas, l'extension .pl n'est pas reconnue, j'ai une fenêtr e me demandant si je veux l'ouvrir ou le télécharger;
j'ai trouvé un fichier 75_mod_perl.conf qui est inclus dans le httpd.conf
et là il y a des choses interessantes, notament le LoadModule tel que ci dessus mais dans une condition
<IfDefine HAVE_PERL>
J'ai aussi la possibilité de définir des Alias /perl/ qui pointent sur /var/www/perl/ que j'ai changé en /home/alain/sites/perl/ c'est la que j'ai mes sites d'essai
Un autre Alias /cgi-perl/ idem
Mais par contre ce sont toujours dans des
<IfModule mod_perl.c>
As tu une idée ? -
Ok alors je vais tester si perl est opérationnel.
Je te tiens au courant.
merci -
ModérateurAddModule mod_perl.c
ça me mets une erreur AddModule Invalid command ,
La directive AddModule c'est une directive qui permet d'activer les modules compilés.
Dans le cas de mod_perl c'est inutile, mod_perl n'est pas un module compilé.
La directive LoadModule crée un lien vers le fichier objet ou la bibliothéque concernée
c'est le cas de mod_perl -
ModérateurPour l'info
Pour la programmation web tu peux utiliser HTML::Mason
Tu peux l'utiliser directement dans les pages web comme on fait avec PHP, ce qui rends inutile l'apprentisage PHP si on connaît Perl et on dispose d'un server qui est configuré avec ce module.
D'ailleurs pour les programmeurs Perl l'apprentissage du PHP n'est pas difficile, PHP c'est du PERL :-DDDD
-
j'ai fait
LoadModule perl_module /usr/lib/apache-extramodules/mod_perl.so => le resart de httpd est OK
effectivement j'ai bien perl_module (shared) avec le DUMP_MODULES
Mais si dans httpd.conf je mets ensuite la ligne
AddModule mod_perl.c
ça me mets une erreur AddModule Invalid command ,
est ce que cette ligne est indispensable ? -
ModérateurVoilà ce que tu dois écrire
LoadModule perl_module /usr/lib/apache-extramodules/mod_perl.so
ensuite redémarre httpd et tape la commandehttpd -t -D DUMP_MODULES
et dit si tu vois le module perl chargé -
Merci pour ton aide, c'est sympa, j'apprecie.
A la commande find |grep *perl*.so
/etc/libexec/libperl.so (ça c'est celui que j'ai ajouté )
/usr/lib/perl5/5.8.8/i386-linux/CORE/libperl.so
/usr/lib/apache-extramodules/mod_perl.so
a la commande urp -qa |grep perl
j'ai toute une liste notament:
perl-5.8.8-7 mdv2007.0
apache-mod_perl-2.0.2-8mdv2007.0
perl-Module-Build-0.2805-1mdv2007.0
C'est pas sur le même micro alors difficile à faire un copier coller. Mais si nécessaire je peux faire une sortie vers un fichier. -
ModérateurIci je vois
J'ai fait urpmi apache-mod_perl
et réponse de Linux:
Tous les paquetages sont déjà installés.
Ce qui veut dire qu'il est installé
Comme je te l'ai dit je n'ai pas mandriva et je ne peux pas vérifier, mais je vais essayer de t'aider
Affichefind / -name '*perl*.so' rpm -qa | grep perl
-
Effectivement les apt-get je ne les utilise plus depuis que j'ai abandonné débian
J'ai suivi leurs conseils uniquement pour tester les si les modules additionnels étaient installés
et la commande perl -v m'a donné perl5.8.8 donc j'ai supposé que perl était installé.
J'ai seulement appliqué les modifs du fichier httpd.conf et c'est là que ça a bloqué.
Ce n'est pas le seul site qui donne cette ajout : "LoadModule perl_module libexec/libper.so".
Je viens de voir ton deuxième message, j'attends.
merci de ton aide-
-
Ok tu vas plus vite que la BD de CCM
J'ai tapé ta commande, elle me donne une liste de modules avec (shared) en fin de chaque ligne.
Mais aucun avec perl.
j'ai tapé urmpi mod_perl => pas de apquetage mod_perl, les paquetages suivants contienent mod_perl:
-apache-mod_perl
-apache-mod_perl-devel
dois je installer le dernier ?
-
-
Modérateuraffiche
httpd -t -D DUMP_MODULES
la commande httpd -l t'affiche les modules compilé et ce n'est pas le cas d'apache -
ModérateurEst ce que j'essaye de les désinstaller et réinstaller. ? Je sais c'est une méthode wind.....s ???
Non, attends un peu. :-)) -
ModérateurDans le tuto sur trustonme c'est une installation manuelle de mod_perl, pas très conseillé pour les débutants
En plus je vois une chose qui me fait rigoler voir de dire JE REVE !!!!!!!!!!!!!!!!!!!
Je cite depuis trustonme http://www.trustonme.net/didactels/229.html
Votre distribution est nécessairement livrée avec un paquetage perl, c'est ce dernier que je vous conseille d'installer, surtout s'il est récent. La dernière version étant la 5.8.0 et datant de juillet 2002. Pour savoir si perl est installé, tapez : perl -v. Dans tous les cas, vous pouvez l'installer vous-même, en suivant ce qui suit.
* Pour les utilisateurs de Debian, tapez :
# apt-get install perl
* Pour les utilisateurs de Mandriva, tapez :
# urpmi perl
* Pour les utilisateurs de Redhat, installez l'archive dispo sur votre cdrom :
# rpm -Uvh perl-xxxx.rpm
* Pour les utilisateurs de Slackware, installez l'archive dispo sur votre cdrom :
# installpkg perl-xxxx.tgz
C'est UNE ABERATION, mais bon :-))
Soyons clair. Perl est installé (pas seulement livré) sur GNU/Linux pas besoin de l'installer.
En revanche on peux le mettre à jour.
Ici on parle de mod_perl pour apache qui n'est pas installer par défaut. Donc tu peux l'installer avec ton gestionnaire de paquetages.
Je n'ai pas Mandriva sous la main mais je te conseille d'installer apache et les mod apache avec urpmi apache-mod_perl ou urpmi mod_perl
A vérifier.
- 1
- 2