Comment "executer" un fichier .pl dans un navigateur?
2 réponses
Thierry
J'en suis =E0 quelques minutes d'exp=E9rience en langage Perl, j'ai
copi=E9/coll=E9 un fichier .pl (un exemple tir=E9 d'une documentation)dans
le r=E9pertoire /var/www/perl, et lorsque je veux l'ouvrir dans un
navigateur, en l'occurence firefox (Linux/Mandriva) une boite de
dialogue s'ouvre et me propose, soit d'ouvrir le fichier dans un
=E9diteur de texte, soit de l'enregistrer dans un r=E9pertoire...
Je doute que ce soit le but de ces quelques lignes de code!?
J'ai install=E9 et configur=E9 Apache/PHP/MySql, j'ai modifi=E9 le fichier
httpd.conf pour avoir des droits particulier dans un r=E9pertoire
sp=E9cifique, pour les pages PHP =E7=E0 fonctionne, j'ai essay=E9 de faire
la m=EAme chose pour les fichiers .pl et .cgi mais =E7=E0 donne le
r=E9sultat ci-dessus.
Quelqu'un pourrait-il me renseigner?
Merci.
#!/usr/bin/perl -W
# Fichier script.pl
use strict qw(subs vars refs);
my $file =3D "$0";
open(FILE, "<$file");
#Lecture du fichier ligne par ligne jusqu'=E0 la fin du fichier.
while (<FILE>) {
#Remplace tous les mots 'file' par 'fichier'.
$_ =3D~ s/file/fichier/ig;
#Transforme les lettres minuscules de 'a' =E0 'e' en majuscules.
$_ =3D~ tr/a-e/A-E/;
#Affiche le r=E9sultat des transformations =E0 l'=E9cran.
print $_;=20
}=20
close(FILE);=20
#Fin script.pl
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jacques Caron
Salut,
On 10 Jul 2005 08:03:24 -0700, Thierry wrote:
J'en suis à quelques minutes d'expérience en langage Perl, j'ai copié/collé un fichier .pl (un exemple tiré d'une documentation)dans le répertoire /var/www/perl, et lorsque je veux l'ouvrir dans un navigateur, en l'occurence firefox (Linux/Mandriva) une boite de dialogue s'ouvre et me propose, soit d'ouvrir le fichier dans un éditeur de texte, soit de l'enregistrer dans un répertoire...
Et si tu le fais, tu obtiens, quoi, ton script, ou autre chose?
J'ai installé et configuré Apache/PHP/MySql, j'ai modifié le fichier httpd.conf pour avoir des droits particulier dans un répertoire spécifique, pour les pages PHP çà fonctionne, j'ai essayé de faire la même chose pour les fichiers .pl et .cgi mais çà donne le résultat ci-dessus.
En général, à moins d'utiliser mod_perl, un script perl sera considéré comme un CGI, donc il faut le mettre à l'endroit où on met les CGI (en général cgi-bin ou quelque chose du genre), avec les bonnes options (ScriptAlias en particulier). Sinon on peut se débrouiller pour que ça déclenche sur le suffixe et/ou le fait que le bit exécutable soit mis, mais si tous nous donnais les extraits qui vont bien de ton httpd.conf ça aiderait.
#!/usr/bin/perl -W # Fichier script.pl use strict qw(subs vars refs); my $file = "$0"; open(FILE, "<$file"); #Lecture du fichier ligne par ligne jusqu'à la fin du fichier. while (<FILE>) { #Remplace tous les mots 'file' par 'fichier'. $_ =~ s/file/fichier/ig; #Transforme les lettres minuscules de 'a' à 'e' en majuscules. $_ =~ tr/a-e/A-E/; #Affiche le résultat des transformations à l'écran. print $_; } close(FILE); #Fin script.pl
Note que ce script n'est pas vraiment fait pour tourner comme un CGI, puisqu'il n'envoie pas les headers HTTP suivis d'une ligne vide... C'est plutôt un script perl "classique"...
Jacques.
Salut,
On 10 Jul 2005 08:03:24 -0700, Thierry <thierry.spetebroot@free.fr> wrote:
J'en suis à quelques minutes d'expérience en langage Perl, j'ai
copié/collé un fichier .pl (un exemple tiré d'une documentation)dans
le répertoire /var/www/perl, et lorsque je veux l'ouvrir dans un
navigateur, en l'occurence firefox (Linux/Mandriva) une boite de
dialogue s'ouvre et me propose, soit d'ouvrir le fichier dans un
éditeur de texte, soit de l'enregistrer dans un répertoire...
Et si tu le fais, tu obtiens, quoi, ton script, ou autre chose?
J'ai installé et configuré Apache/PHP/MySql, j'ai modifié le fichier
httpd.conf pour avoir des droits particulier dans un répertoire
spécifique, pour les pages PHP çà fonctionne, j'ai essayé de faire
la même chose pour les fichiers .pl et .cgi mais çà donne le
résultat ci-dessus.
En général, à moins d'utiliser mod_perl, un script perl sera considéré
comme un CGI, donc il faut le mettre à l'endroit où on met les CGI (en
général cgi-bin ou quelque chose du genre), avec les bonnes options
(ScriptAlias en particulier). Sinon on peut se débrouiller pour que ça
déclenche sur le suffixe et/ou le fait que le bit exécutable soit mis,
mais si tous nous donnais les extraits qui vont bien de ton httpd.conf ça
aiderait.
#!/usr/bin/perl -W
# Fichier script.pl
use strict qw(subs vars refs);
my $file = "$0";
open(FILE, "<$file");
#Lecture du fichier ligne par ligne jusqu'à la fin du fichier.
while (<FILE>) {
#Remplace tous les mots 'file' par 'fichier'.
$_ =~ s/file/fichier/ig;
#Transforme les lettres minuscules de 'a' à 'e' en majuscules.
$_ =~ tr/a-e/A-E/;
#Affiche le résultat des transformations à l'écran.
print $_;
}
close(FILE);
#Fin script.pl
Note que ce script n'est pas vraiment fait pour tourner comme un CGI,
puisqu'il n'envoie pas les headers HTTP suivis d'une ligne vide... C'est
plutôt un script perl "classique"...
J'en suis à quelques minutes d'expérience en langage Perl, j'ai copié/collé un fichier .pl (un exemple tiré d'une documentation)dans le répertoire /var/www/perl, et lorsque je veux l'ouvrir dans un navigateur, en l'occurence firefox (Linux/Mandriva) une boite de dialogue s'ouvre et me propose, soit d'ouvrir le fichier dans un éditeur de texte, soit de l'enregistrer dans un répertoire...
Et si tu le fais, tu obtiens, quoi, ton script, ou autre chose?
J'ai installé et configuré Apache/PHP/MySql, j'ai modifié le fichier httpd.conf pour avoir des droits particulier dans un répertoire spécifique, pour les pages PHP çà fonctionne, j'ai essayé de faire la même chose pour les fichiers .pl et .cgi mais çà donne le résultat ci-dessus.
En général, à moins d'utiliser mod_perl, un script perl sera considéré comme un CGI, donc il faut le mettre à l'endroit où on met les CGI (en général cgi-bin ou quelque chose du genre), avec les bonnes options (ScriptAlias en particulier). Sinon on peut se débrouiller pour que ça déclenche sur le suffixe et/ou le fait que le bit exécutable soit mis, mais si tous nous donnais les extraits qui vont bien de ton httpd.conf ça aiderait.
#!/usr/bin/perl -W # Fichier script.pl use strict qw(subs vars refs); my $file = "$0"; open(FILE, "<$file"); #Lecture du fichier ligne par ligne jusqu'à la fin du fichier. while (<FILE>) { #Remplace tous les mots 'file' par 'fichier'. $_ =~ s/file/fichier/ig; #Transforme les lettres minuscules de 'a' à 'e' en majuscules. $_ =~ tr/a-e/A-E/; #Affiche le résultat des transformations à l'écran. print $_; } close(FILE); #Fin script.pl
Note que ce script n'est pas vraiment fait pour tourner comme un CGI, puisqu'il n'envoie pas les headers HTTP suivis d'une ligne vide... C'est plutôt un script perl "classique"...
Jacques.
Thierry
Si je décide de l'ouvrir, il s'ouvre dans un éditeur de texte, si je décide de l'enregistrer, il s'enregistre.
voilà un extrait du commonhttpd.conf. je pense avoir mis le principal pour ce qui concerne le problème posé, vous y verrez certainement plus clair que moi.
Thierry
<IfModule mod_perl.c> <Location /perl-status> SetHandler perl-script <IfDefine !APACHE2> PerlHandler Apache::Status </IfDefine> <IfModule mod_access.c> Order allow,deny allow from all </IfModule> </Location> </IfModule>
#<Location /cgi-bin/phf*> # Deny from all # ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi #</Location>
<IfModule mod_include.c> # XBitHack on </IfModule>
# # This should be changed to whatever you set DocumentRoot to. #
<Directory /var/www/html>
# # This may also be "None", "All", or any combination of "Indexes", # "Includes", "FollowSymLinks", "SymLinksifOwnerMatch", "ExecCGI", or "MultiViews". # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # Options -Indexes FollowSymLinks MultiViews Options Indexes FollowSymLinks # # This controls which options the .htaccess files in directories can # override. Can also be "All", or any combination of "Options", "FileInfo", # "AuthConfig", and "Limit" # AllowOverride All
# # Controls who can get stuff from this server. # <IfModule mod_access.c> Order allow,deny Allow from all </IfModule> </Directory>
<Directory /var/www/perl> AllowOverride All Options Indexes FollowSymLinks ExecCGI <IfModule mod_access.c> Order allow,deny Allow from all </IfModule> Order allow,deny Allow from all
</Directory>
<IfModule mod_cgid.c> # # Additional to mod_cgid.c settings, mod_cgid has Scriptsock <path> # for setting UNIX socket for communicating with cgid. # #Scriptsock /cgisock </IfModule>
<IfModule mod_usertrack.c> # This is the default. CookieName Apache </IfModule>
<Directory /var/www/cgi-bin> AllowOverride All Options ExecCGI <IfModule mod_access.c> Order allow,deny Allow from all </IfModule> </Directory>
<Directory /var/www/protected-cgi-bin> AllowOverride All Options ExecCGI <IfModule mod_access.c> Order allow,deny allow from all
</IfModule> </Directory>
# Control access to UserDir directories. The following is an example # for a site where these directories are restricted to read-only. # #<Directory /home/*/public_html> # AllowOverride FileInfo AuthConfig Limit # Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec # <Limit GET POST OPTIONS PROPFIND> # Order allow,deny # Allow from all # </Limit> # <LimitExcept GET POST OPTIONS PROPFIND> # Order deny,allow # Deny from all # </LimitExcept> #</Directory>
# These settings are pretty flexible, and allow for Frontpage and XSSI <Directory /home/*/public_html> AllowOverride All Options MultiViews -Indexes Includes FollowSymLinks <IfModule mod_access.c> Order allow,deny Allow from all </IfModule> </Directory>
<Directory /home/*/public_html/cgi-bin> Options +ExecCGI -Includes -Indexes SetHandler cgi-script <IfModule mod_access.c> Order allow,deny Allow from all </IfModule> </Directory>
<IfModule mod_perl.c> <Directory /home/*/public_html/perl> SetHandler perl-script <IfDefine !APACHE2> PerlHandler Apache::PerlRun </IfDefine> <IfDefine APACHE2> PerlResponseHandler ModPerl::PerlRun </IfDefine> Options -Indexes ExecCGI PerlSendHeader On <IfModule mod_access.c> Order allow,deny Allow from all </IfModule> </Directory> </IfModule>
<Directory /var/www/icons> Options -Indexes MultiViews AllowOverride None <IfModule mod_access.c> Order allow,deny Allow from all </IfModule> </Directory>
<Directory /usr/share/doc> Options Indexes FollowSymLinks <IfModule mod_access.c> Order deny,allow Deny from all Allow from 127.0.0.1 #allow from .your_domain.com </IfModule> </Directory>
#set Apache::Registry Mode for /perl Alias <Location /perl/*.pl> SetHandler perl-script <IfDefine !APACHE2> PerlHandler Apache::Registry </IfDefine> <IfDefine APACHE2> PerlResponseHandler ModPerl::Registry </IfDefine> Options -Indexes ExecCGI PerlSendHeader On </Location>
#set Apache::PerlRun Mode for /cgi-perl Alias <Location /cgi-perl/*.pl> SetHandler perl-script <IfDefine !APACHE2> PerlHandler Apache::PerlRun </IfDefine> <IfDefine APACHE2> PerlResponseHandler ModPerl::PerlRun </IfDefine> Options -Indexes ExecCGI PerlSendHeader On </Location> </IfModule>
Si je décide de l'ouvrir, il s'ouvre dans un éditeur de texte,
si je décide de l'enregistrer, il s'enregistre.
voilà un extrait du commonhttpd.conf. je pense avoir mis le principal
pour ce qui concerne le problème posé, vous y verrez certainement
plus clair que moi.
Thierry
<IfModule mod_perl.c>
<Location /perl-status>
SetHandler perl-script
<IfDefine !APACHE2>
PerlHandler Apache::Status
</IfDefine>
<IfModule mod_access.c>
Order allow,deny
allow from all
</IfModule>
</Location>
</IfModule>
#<Location /cgi-bin/phf*>
# Deny from all
# ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
#</Location>
<IfModule mod_include.c>
# XBitHack on
</IfModule>
#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory /var/www/html>
#
# This may also be "None", "All", or any combination of "Indexes",
# "Includes", "FollowSymLinks", "SymLinksifOwnerMatch", "ExecCGI", or
"MultiViews".
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# Options -Indexes FollowSymLinks MultiViews
Options Indexes FollowSymLinks
#
# This controls which options the .htaccess files in directories can
# override. Can also be "All", or any combination of "Options",
"FileInfo",
# "AuthConfig", and "Limit"
#
AllowOverride All
#
# Controls who can get stuff from this server.
#
<IfModule mod_access.c>
Order allow,deny
Allow from all
</IfModule>
</Directory>
<Directory /var/www/perl>
AllowOverride All
Options Indexes FollowSymLinks ExecCGI
<IfModule mod_access.c>
Order allow,deny
Allow from all
</IfModule>
Order allow,deny
Allow from all
</Directory>
<IfModule mod_cgid.c>
#
# Additional to mod_cgid.c settings, mod_cgid has Scriptsock <path>
# for setting UNIX socket for communicating with cgid.
#
#Scriptsock /cgisock
</IfModule>
<IfModule mod_usertrack.c>
# This is the default.
CookieName Apache
</IfModule>
<Directory /var/www/cgi-bin>
AllowOverride All
Options ExecCGI
<IfModule mod_access.c>
Order allow,deny
Allow from all
</IfModule>
</Directory>
<Directory /var/www/protected-cgi-bin>
AllowOverride All
Options ExecCGI
<IfModule mod_access.c>
Order allow,deny
allow from all
</IfModule>
</Directory>
# Control access to UserDir directories. The following is an example
# for a site where these directories are restricted to read-only.
#
#<Directory /home/*/public_html>
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
# <Limit GET POST OPTIONS PROPFIND>
# Order allow,deny
# Allow from all
# </Limit>
# <LimitExcept GET POST OPTIONS PROPFIND>
# Order deny,allow
# Deny from all
# </LimitExcept>
#</Directory>
# These settings are pretty flexible, and allow for Frontpage and XSSI
<Directory /home/*/public_html>
AllowOverride All
Options MultiViews -Indexes Includes FollowSymLinks
<IfModule mod_access.c>
Order allow,deny
Allow from all
</IfModule>
</Directory>
<Directory /home/*/public_html/cgi-bin>
Options +ExecCGI -Includes -Indexes
SetHandler cgi-script
<IfModule mod_access.c>
Order allow,deny
Allow from all
</IfModule>
</Directory>
<IfModule mod_perl.c>
<Directory /home/*/public_html/perl>
SetHandler perl-script
<IfDefine !APACHE2>
PerlHandler Apache::PerlRun
</IfDefine>
<IfDefine APACHE2>
PerlResponseHandler ModPerl::PerlRun
</IfDefine>
Options -Indexes ExecCGI
PerlSendHeader On
<IfModule mod_access.c>
Order allow,deny
Allow from all
</IfModule>
</Directory>
</IfModule>
<Directory /var/www/icons>
Options -Indexes MultiViews
AllowOverride None
<IfModule mod_access.c>
Order allow,deny
Allow from all
</IfModule>
</Directory>
<Directory /usr/share/doc>
Options Indexes FollowSymLinks
<IfModule mod_access.c>
Order deny,allow
Deny from all
Allow from 127.0.0.1
#allow from .your_domain.com
</IfModule>
</Directory>
Si je décide de l'ouvrir, il s'ouvre dans un éditeur de texte, si je décide de l'enregistrer, il s'enregistre.
voilà un extrait du commonhttpd.conf. je pense avoir mis le principal pour ce qui concerne le problème posé, vous y verrez certainement plus clair que moi.
Thierry
<IfModule mod_perl.c> <Location /perl-status> SetHandler perl-script <IfDefine !APACHE2> PerlHandler Apache::Status </IfDefine> <IfModule mod_access.c> Order allow,deny allow from all </IfModule> </Location> </IfModule>
#<Location /cgi-bin/phf*> # Deny from all # ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi #</Location>
<IfModule mod_include.c> # XBitHack on </IfModule>
# # This should be changed to whatever you set DocumentRoot to. #
<Directory /var/www/html>
# # This may also be "None", "All", or any combination of "Indexes", # "Includes", "FollowSymLinks", "SymLinksifOwnerMatch", "ExecCGI", or "MultiViews". # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # Options -Indexes FollowSymLinks MultiViews Options Indexes FollowSymLinks # # This controls which options the .htaccess files in directories can # override. Can also be "All", or any combination of "Options", "FileInfo", # "AuthConfig", and "Limit" # AllowOverride All
# # Controls who can get stuff from this server. # <IfModule mod_access.c> Order allow,deny Allow from all </IfModule> </Directory>
<Directory /var/www/perl> AllowOverride All Options Indexes FollowSymLinks ExecCGI <IfModule mod_access.c> Order allow,deny Allow from all </IfModule> Order allow,deny Allow from all
</Directory>
<IfModule mod_cgid.c> # # Additional to mod_cgid.c settings, mod_cgid has Scriptsock <path> # for setting UNIX socket for communicating with cgid. # #Scriptsock /cgisock </IfModule>
<IfModule mod_usertrack.c> # This is the default. CookieName Apache </IfModule>
<Directory /var/www/cgi-bin> AllowOverride All Options ExecCGI <IfModule mod_access.c> Order allow,deny Allow from all </IfModule> </Directory>
<Directory /var/www/protected-cgi-bin> AllowOverride All Options ExecCGI <IfModule mod_access.c> Order allow,deny allow from all
</IfModule> </Directory>
# Control access to UserDir directories. The following is an example # for a site where these directories are restricted to read-only. # #<Directory /home/*/public_html> # AllowOverride FileInfo AuthConfig Limit # Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec # <Limit GET POST OPTIONS PROPFIND> # Order allow,deny # Allow from all # </Limit> # <LimitExcept GET POST OPTIONS PROPFIND> # Order deny,allow # Deny from all # </LimitExcept> #</Directory>
# These settings are pretty flexible, and allow for Frontpage and XSSI <Directory /home/*/public_html> AllowOverride All Options MultiViews -Indexes Includes FollowSymLinks <IfModule mod_access.c> Order allow,deny Allow from all </IfModule> </Directory>
<Directory /home/*/public_html/cgi-bin> Options +ExecCGI -Includes -Indexes SetHandler cgi-script <IfModule mod_access.c> Order allow,deny Allow from all </IfModule> </Directory>
<IfModule mod_perl.c> <Directory /home/*/public_html/perl> SetHandler perl-script <IfDefine !APACHE2> PerlHandler Apache::PerlRun </IfDefine> <IfDefine APACHE2> PerlResponseHandler ModPerl::PerlRun </IfDefine> Options -Indexes ExecCGI PerlSendHeader On <IfModule mod_access.c> Order allow,deny Allow from all </IfModule> </Directory> </IfModule>
<Directory /var/www/icons> Options -Indexes MultiViews AllowOverride None <IfModule mod_access.c> Order allow,deny Allow from all </IfModule> </Directory>
<Directory /usr/share/doc> Options Indexes FollowSymLinks <IfModule mod_access.c> Order deny,allow Deny from all Allow from 127.0.0.1 #allow from .your_domain.com </IfModule> </Directory>