Salut, tout le monde
alors voila j'ai comme qui dirait un petit problème.
Pour faire bref : J'ai une page internet internet qui contient un formulaire qui envoie les infos saisies à un script Perl.

HTML :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
<form action="http://10.67.92.110:8080/xwiki/cgi-bin/script.pl" method="get" id="newdoc">
 <input type="hidden" name="parent" value="${doc.fullName}" />
 <input type="hidden" name="template" value="XWiki.DefinitionClassTemplate" />
 <input type="hidden" name="webname" value="Lexique" size="8" />
 Titre : <input type="text" name="name" value="Nom à définir (sans caractère spéciaux ni espace)" size="50" />
 <input type="button" value="Ajouter" onclick='if (updateName(this.form.name)) {this.form.action="../../inline/" + this.form.webname.value + "/" + this.form.name.value; this.form.submit(); }'>
 </form>

Script Perl :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
use warnings;
use strict;
use CGI::Carp qw (fatalsToBrowser);
use Encode::Encoder qw(encoder);
 
	open OUT,"> list_mots.csv" or die "Le fichier ne peut être édité !\n";
	my $donnees = $ENV{'QUERY_STRING'};
	my @champs_formulaire = split(/&/, $donnees);
	my ($champ, $nom, $valeur);
	my %formulaire;
	foreach $champ (@champs_formulaire) {
		(my $nom, my $valeur) = split(/=/, $champ);
		$valeur =~ tr/+/ /;
		$valeur =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
		$valeur =~ s/</&lt;/g;
		$valeur =~ s/>/&gt;/g;
		$formulaire{$nom} = $valeur;
	}
	if($formulaire{name} =~ /^[a-z](.*)/){
		my $var_aux = substr($formulaire{name},0,1);
		$var_aux =~ tr/a-z/A-Z/;
		$formulaire{name} = $var_aux.$1;
	}
	print OUT $formulaire{name};
	do "megascript.pl";
	close OUT;
	my $name = Encode::encode("utf8", $formulaire{name});
 
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n";
print "<html><head><title>Redirection</title>\n";
print "<meta http-equiv=\"refresh\" content=\"0; URL=http://localhost:8080/xwiki/bin/inline/Lexique/$name?parent=$formulaire{parent}&template=$formulaire{template}&webname=$formulaire{webname}&name=$name\"\n";
print "</head>\n";
print "</body></html>\n";
Le script appelé par ce dernier (megascript.pl) tente entre autre d'accéder une base de données MySQL et la problème ça marche pas =( alors que si je lance le megascript manuellement ça marche. J'ai fait quelque test et il se trouve que c'est la connexion à la base qui échoue.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
use warnings;
use strict;
use Carp;
use DBI;
use CGI;
use Encode::Encoder qw(encoder);
 
sub imp_lex{
	open OUT,"> lex_aux.csv" or die "Le fichier lex_aux.csv ne peut être édité !\n";
	my $co = new CGI;
	print $co->header;
 
	my $database="wikidb";
	my $hostname="localhost";
	my $login = "wikiUser";
	my $mdp = "****";
 
	my $dsn = "DBI:mysqlPP:database=$database;host=$hostname;port=3308";
	my $dbh = DBI->connect($dsn, $login, $mdp) or die "Echec connexion";
 
	my $query = "SELECT XWD_CONTENT FROM xwikidoc x where XWD_FULLNAME = \"Lexique.WebHome\"";
	my $sth = $dbh->prepare($query);
 
	$sth ->execute();
	while(my @data = $sth->fetchrow_array()){
		print OUT $data[0];
	}
	$sth -> finish;
 
}
L'erreur est à la ligne 19 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
my $dbh = DBI->connect($dsn, $login, $mdp) or die "Echec connexion";
Je sais pas d'où ça peut venir si quelqu'un à une idée, je suis preneur.