J'ai développé une application web sous CGI.pm.J'aimerais changer de mod_perl2. Mon webapp fonctionnait sous CGI mais quand j'ai essayé de changer le mod, ça ne fonctionne plus alors que je n'ai rien changé dans la webapp, sauf les fichiers apache conf pour fonctionner sous mod_perl.ModPerl :: RegistryPrefork devrait faire fonctionner mon ancien cgi mais
J'ai installé mod-perl2 et configurer mon VirualHost comme ceci:
Alias /project1/ /var/www/v6/cgi-bin/
PerlModule Apache::DBI
PerlModule ModPerl::RegistryPrefork
<Directory /var/www/v6/cgi-bin/ >
PerlOptions -SetupEnv
SetHandler perl-script
PerlResponseHandler ModPerl::RegistryPrefork
PerlOptions +ParseHeaders
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>
Mon script ressemble. il utilise des modules/v6/cgi-bin/lib/
#!/usr/bin/perl
use lib qw(lib);
use strict;
use DBI;
use CGI;
use Template;
use CGI::Carp qw(fatalsToBrowser);
use Data::Dumper;
use Connexion;
use Search;
my $cgi = new CGI;
our $fastdb = Connexion::database('1','1');
my $get_description__id_sth = Search->get_description_id_sth();
Apache2 écrire l'erreur dans le journal:
[Jeu 3 février 2011 17:35:13] -e: DBI connect (':', '', ...) a échoué: Accès refusé pour l'utilisateur 'www-data' @ 'localhost' (en utilisant le mot de passe: NO) à ligne lib/Connexion.pm 134
Dans le navigateur j'ai:
peut appeler la méthode « préparer » à une valeur non définie à lib/ligne Search.pm 51.
Donc, je comprends que le script ne peut pas se connecter au database.But pourquoi ? Cela fonctionnait sur mod_cgi. Si quelqu'un a une idée:.?. »( Merci
non * utiliser les avertissements; *, ici ou dans * Connexion * qui aurait attrapé le problème * $ var * dupliqué – MkV
aussi, comme mentionné dans l'une des réponses, éteindre SetupEnv dans PerlOptions supprime une partie de la compatibilité entre mod_cgi et mod_perl – MkV