|
Sujet : Perl & Apache |
| asphro |
oui je comprend tjrs po ton bleme pis pour le /var/www
chacun c habitude...
c comme la cuillere dans le pot de nutella |
| lelfe |
Mon problème est très tordu et space, je l'admets.
Voici un script bidon, on l'appelera test.pl:
----- test.pl -----
#!/usr/bin/perl
use CGI;
my $q = new CGI;
print $q->header();
print "<HTML><BODY>TEST.PL > OK</BODY></HTML>\n";
-------------------
Si je mets ca dans mon cgi-bin et que je l'appelle, ca marche bien.
Voici maintenant un autre script, on l'apperal require.pl
----- require.pl -------
#!/usr/bin/perl
require "malibamoi.pl";
use CGI;
my $q = new CGI;
print $q->header();
print "<HTML><BODY>REQUIRE.PL > OK</BODY></HTML>\n";
------------------------
(malibamoi.pl se trouve dans le même répertoire que require.pl)
Ce second script ne passe pas, car il nécessite un autre script.
Perl va le rechercher dans la liste contenu dans @INC.
Cette liste contient . (répertoire courant), or, malibamoi.pl est bien dans ce répertoire, donc ce ne devrait pas poser de problème. Malheuresement, quand Apache execute le script, le répertoire courant n'est pas celui du script, donc le . correspond pas au bon repertoire, donc il ne trouve pas la lib, donc erreur, pour Apache, une 500.
C plus clair (au fait je suis sous Mdk, mais j'ai tout réinstaller à partir de source) ?
Sinon, pour ce qui est de la discution sur les répertoire /var/...
je suis d'accord pour dire que c'est bidon de mettre ses fichiers web dans cette branche, mais ce sont les répertoires par défaut de l'installation de certaines distrib d'apache (sur la Mdk, c'est comme ca, mais bon, ca se change)
LELFE |
| lelfe |
Salut
Je viens de réinstaller conplèment Apache avec Php (mod_php) mais Perl me pose toujours problème.
Je ne veux pas installer mod_perl (ca mets trop le bordel), mais je m'en sors pas avec ce que j'ai actuellement.
En ce moment, le serveur Apache tourne correctement pour ce qui est du html et php. Les scripts tournent s'ils sont seuls, si dans l'un d'entre eux, je fais appel à un autre script (avec require "monscript.pl" ) et bien perl ne le trouve pas, (impossible de trouver le fichier dans @INC)
Hors, dans @INC, il y a bien . (le répertoire courant), mais j'ai
l'impression, que quand l'interpretateur perl execute le script, il prend le répertoire courant du shell, et non pas le répertoire dans lequel se trouve le script.
Si je me place dans le répertoire du script, et que j'exécute le script en ligne de commande, tout passe bien, mais si je suis en http, ca passe pas.
Comment expliquer à Apache qu'il doit faire :
cd /mon/rep/avec/mes/cgi
perl monscript.pl
et pas
perl /mon/rep/avec/mes/cgi
Lorsqu'il exécute les script. Une idée ?
Merci d'avance
Cordialement
Aurélien |