Précédent   Forum du club des développeurs et IT Pro > Autres langages > Perl > Web
Web Toutes vos questions sur la construction de pages web en Perl (CGI, Ajax, mod_perl, sessions, ...) Avant de poster, veuillez consulter les FAQs perl, les cours Perl et les sources Perl.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 25/07/2012, 11h18   #1
angioedema
Nouveau Membre du Club
 
Étudiant
Inscription : novembre 2009
Messages : 107
Détails du profil
Informations personnelles :
Âge : 23

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2009
Messages : 107
Points : 36
Points : 36
Par défaut cgi (apache) : affichage du code dans navigateur

Bonjour,

Je suis face à un problème. Je souhaite faire fonctionner BatchPrimer3 sur un serveur. Après plusieurs recherches (et en cas de beug dans le code), j'ai tout repris afin qu'un script html tout simple appelle le script cgi dont voici la ligne:

Code :
<td align="center"><a target="_blank" href="batchprimer3.cgi" class="menu"><b>Primer Design Server </b></a></td>
Le lien est bon mais je ne sais pas pourquoi au lieu d'interpréter le code, celui ci est affiché dans le navigateur ... ce qui est très embêtant. Du coup je suppose que c'est un problème entre apache et cgi, j'ai essayé tout les tutos ci dessous en vain :

http://doc.ubuntu-fr.org/apache2
http://httpd.apache.org/docs/2.4/fr/...ml#configuring

Pour le moment mes scripts cgi sont dans usr/lib/cgi-bin/nom_du_site
mes fichier html dans var/www/nom_du site

J'ai essayé en les réunissant, en les séparant sans aucun effet.
Le fichier apache2.conf modifier (il ne contient pas de ScriptAlias à la base) ou non donne le même résultat, ainsi que le httpd.conf (qui par contre est initialement vide).

Du coup si vous avez d'autres pistes, je ne dirais pas non puisque je suis arrivée au bout de toutes les idées ....

Merci pour votre attention
angioedema est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2012, 15h18   #2
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 809
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 809
Points : 31 514
Points : 31 514
Bonjour,

Il faut nous montrer la configuration de ton apache pour voir si le CGI est bien configuré. Ensuite, faudrait voir si le programme Perl est bien conçu et vérifier que le module CGI est bien installé.
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2012, 15h52   #3
angioedema
Nouveau Membre du Club
 
Étudiant
Inscription : novembre 2009
Messages : 107
Détails du profil
Informations personnelles :
Âge : 23

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2009
Messages : 107
Points : 36
Points : 36
Rebonjour,

Merci pour la rapidité de la réponse.

Tu entends quoi par config ? le fichier apache2.conf ou autre ?

Le programme perl tourne sur d'autres plateformes donc ce n'est pas le problème (exemple : http://probes.pw.usda.gov/cgi-bin/ba...tchprimer3.cgi)

Le module CGI est bien installé ^^

Merci.
angioedema est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2012, 15h56   #4
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 809
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 809
Points : 31 514
Points : 31 514
êtes-vous sûr que les programmes tournent sur votre serveur ?
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2012, 16h33   #5
angioedema
Nouveau Membre du Club
 
Étudiant
Inscription : novembre 2009
Messages : 107
Détails du profil
Informations personnelles :
Âge : 23

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2009
Messages : 107
Points : 36
Points : 36
En l'exécutant à la console, le header est bon. De plus Gbrowse développé en théorie lui aussi en CGI est opérationnel (mais je n'ai pas accès à son code source pour pouvoir comparer ==')
angioedema est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2012, 16h46   #6
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 809
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 809
Points : 31 514
Points : 31 514
Je ne vous parle pas de console, je vous demande juste si vous avez déjà tester un programme basique cgi sur Votre serveur pour voir si tout est correctement paramétré.
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2012, 16h53   #7
angioedema
Nouveau Membre du Club
 
Étudiant
Inscription : novembre 2009
Messages : 107
Détails du profil
Informations personnelles :
Âge : 23

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2009
Messages : 107
Points : 36
Points : 36
C'est là tout le problème ... Des anciens programmes en cgi marche, mais celui de batchprimer3 ou un simple cgi comme suit ne fonctionne pas, lors de l'appel du .pl il m'affiche le code dans le navigateur au lieu de l'exécuter

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/perl
use Carp;
use strict;
use warnings;
 
use CGI;
 
my $cgi = CGI->new;
print $cgi->header();
print $cgi->start_html( 
  -title => 'Page de test CGI',
);
 
print <<'HTML';
  Bonjour <b>calu45</b>, tout fonctionne correctement !
HTML
 
print $cgi->end_html();
angioedema est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2012, 17h09   #8
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 809
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 809
Points : 31 514
Points : 31 514
Vérifiez s'il n'existe pas des ^M dans les fichiers. Par expérience, les fin de ligne à la Windows posent souvent des soucis dans les scripts CGI.

od -c ProgrammeCGI si vous voyez des ^M, c'est surement la cause.

si c'est le cas faites dos2unix Programme ou perl -pi -e 's/\r?\n/\n/g' PROGRAMME
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2012, 09h21   #9
angioedema
Nouveau Membre du Club
 
Étudiant
Inscription : novembre 2009
Messages : 107
Détails du profil
Informations personnelles :
Âge : 23

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2009
Messages : 107
Points : 36
Points : 36
Merci pour votre réponse. La manipulation avait été faites au préalable, j'ai tout de même vérifié et aucun ^M n'apparaît.
angioedema est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2012, 16h41   #10
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 809
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 809
Points : 31 514
Points : 31 514
Quelles sont les messages d'erreur dans le fichier log d'apache ?
Qu'elle est l'extension du programme CGI ?
Peux-t-on voir le contenu du fichier de configuration d'apache ?
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2012, 08h52   #11
blacksnake
Membre du Club
 
Avatar de blacksnake
 
Inscription : octobre 2006
Messages : 63
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 63
Points : 45
Points : 45
En ajoutant ceci dans le fichier de conf d'Apache ça devrait le faire :

Code :
1
2
AddHandler cgi-script .cgi 
AddHandler cgi-script .pl
blacksnake est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2012, 15h16   #12
angioedema
Nouveau Membre du Club
 
Étudiant
Inscription : novembre 2009
Messages : 107
Détails du profil
Informations personnelles :
Âge : 23

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2009
Messages : 107
Points : 36
Points : 36
merci.

@ blacksnake : ça ne change rien
@ djibril :

- messages erreur dans le log
Code :
[Fri Aug 03 14:57:28 2012] [error] [client XXXX] File does not exist: /var/www/favicon.ico
- extension du programme cgi : batchprimer3.cgi

- fichier de config apache :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
 
### Section 1: Global Environment
#
# The directives in this section affect the overall operation of Apache,
# such as the number of concurrent requests it can handle or where it
# can find its configuration files.
#
 
#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# NOTE!  If you intend to place this on an NFS (or otherwise network)
# mounted filesystem then please read the LockFile documentation (available
# at <URL:http://httpd.apache.org/docs-2.1/mod/mpm_common.html#lockfile>);
# you will save yourself a lot of trouble.
#
# Do NOT add a slash at the end of the directory path.
#
ServerRoot "/etc/apache2"
 
#
# The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
#
#<IfModule !mpm_winnt.c>
#<IfModule !mpm_netware.c>
LockFile /var/lock/apache2/accept.lock
#</IfModule>
#</IfModule>
 
#
# PidFile: The file in which the server should record its process
# identification number when it starts.
# This needs to be set in /etc/apache2/envvars
#
PidFile ${APACHE_PID_FILE}
 
#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300
 
#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On
 
#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100
 
#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 15
 
##
## Server-Pool Size Regulation (MPM specific)
## 
 
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>
 
# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>
 
# event MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_event_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadLimit          64
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>
 
# These need to be set in /etc/apache2/envvars
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
 
#
# AccessFileName: The name of the file to look for in each directory
# for additional configuration directives.  See also the AllowOverride
# directive.
#
 
AccessFileName .htaccess
 
#
# The following lines prevent .htaccess and .htpasswd files from being 
# viewed by Web clients. 
#
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy all
</Files>
 
#
# DefaultType is the default MIME type the server will use for a document
# if it cannot otherwise determine one, such as from filename extensions.
# If your server contains mostly text or HTML documents, "text/plain" is
# a good value.  If most of your content is binary, such as applications
# or images, you may want to use "application/octet-stream" instead to
# keep browsers from trying to display binary files as though they are
# text.
#
DefaultType text/plain
 
 
#
# HostnameLookups: Log the names of clients or just their IP addresses
# e.g., www.apache.org (on) or 204.62.129.132 (off).
# The default is off because it'd be overall better for the net if people
# had to knowingly turn this feature on, since enabling it means that
# each client request will result in AT LEAST one lookup request to the
# nameserver.
#
HostnameLookups Off
 
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here.  If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog /var/log/apache2/error.log
 
#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn
 
# Include module configuration:
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
 
# Include all the user configurations:
Include /etc/apache2/httpd.conf
 
# Include ports listing
Include /etc/apache2/ports.conf
 
#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
# If you are behind a reverse proxy, you might want to change %h into %{X-Forwarded-For}i
#
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
 
#
# Define an access log for VirtualHosts that don't define their own logfile
CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined
 
 
# Include of directories ignores editors' and dpkg's backup files,
# see README.Debian for details.
 
# Include generic snippets of statements
Include /etc/apache2/conf.d/
 
# Include the virtual host configurations:
Include /etc/apache2/sites-enabled/
 
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
 
ScriptAlias /cgi-bin/ /var/www/batchprimer3/
	<Directory /var/www/batchprimer3/
	Options ExecCGI
	AddHandler cgi-script cgi pl py
	</Directory>
pour le scriptalias j'ai mis le .cgi directement dans batchprimer3 je ferrais un dossier quand ça marchera.
angioedema est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2012, 15h38   #13
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 809
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 809
Points : 31 514
Points : 31 514
Je te conseil de faire usage d'un répertoire cgi-bin se situant ailleurs que dans le répertoire www .


Code apacheconf :
1
2
3
4
5
6
7
8
 
ScriptAlias /cgi-bin/ "/usr/lib/cgi-bin/"
<Directory "/usr/lib/cgi-bin/">
 AllowOverride None
 Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
 Order allow,deny
 Allow from all
</Directory>
Redémarre ton serveur apache.


Ensuite, sur ton serveur, tu créés ton répertoire /usr/lib/cgi-bin/batchprimer3. Tu mets tes programmes CGI à l'intérieur puis tu penses à mettre les bons droits apache sur ce répertoire et son contenu.
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2012, 15h57   #14
angioedema
Nouveau Membre du Club
 
Étudiant
Inscription : novembre 2009
Messages : 107
Détails du profil
Informations personnelles :
Âge : 23

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2009
Messages : 107
Points : 36
Points : 36
Merci, j'avais essayé après il est vrai que je n'avais pas redémarrer le serveur (chose que j’ignorais ...). Du coup j'attends les autorisations pour le faire et j'indiquerais ce que ça donnera.

Merci encore
angioedema est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2012, 16h13   #15
djibril
Responsable Perl et Outils

 
Avatar de djibril
 
Homme
Inscription : avril 2004
Messages : 13 809
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 13 809
Points : 31 514
Points : 31 514
À chaque modification du fichier de configuration, il faut redémarrer apache. Cela permet à apache de charger les nouvelles modifications et de vérifier que le fichier est valide car dans celui que tu as proposé, il y avait une balise mal écrite <Directory (sans le > fermant).
__________________
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
djibril est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 05h00.


 
 
 
 
Partenaires

Hébergement Web