IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Free Pascal Discussion :

CGI et MySQL


Sujet :

Free Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Juillet 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 12
    Par défaut CGI et MySQL
    Bonjour,

    J'ai écrit un programme CGI de test en FreePascal 2.2.0.
    Le programme tente de se connecter à un serveur MySQL :

    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
    uses
      MySQL50Conn;
      
    begin
      WriteLn ('content-type : text/html');
      WriteLn ('');
      
      with TMySQL50Connection.Create(nil) do
      try
        HostName := '127.0.0.1';
        DatabaseName := '...';
        UserName := '...';
        Password := '...';
        Open;
        WriteLn ('Success');
        Close;
        Free;
      except
        on E: Exception do WriteLn (E.Message);
      end;
    end.
    Quand j'exécute ce programme dans une console (Linux), le message "Success" s'affiche. Tout va bien. Mais quand je l'exécute à partir d'un navigateur web (serveur Apache), c'est "Can not load MySQL library "libmysqlclient.so" qui s'affiche. Le programme ne trouve donc pas (ou n'arrive pas à ouvrir) la bibliothèque dont il a besoin et je n'arrive pas à comprendre pourquoi.

    J'ai affecté une valeur aux variables d'environnement LD_RUN_PATH and LD_LIBRARY_PATH dans httpd.conf (chemin complet du répertoire qui contient libmysqlclient.so). J'ai également ajouté le répertoire de libmysqlclient.so dans le fichier /etc/ld.so.conf file. J'ai même vérifié que l'utilisateur qui exécute Apache possède bien les permissions suffisantes pour exécuter le programme CGI. Sans succès, toujours la même erreur incompréhensible.

    Une idée ?
    Ce n'est peut-être pas ici qu'il faut poser cette question ?
    Merci de me le dire si je dois poser ma question ailleurs.
    Merci d'avance si vous pouvez me donner un coup de main.

  2. #2
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut
    Bonjour,

    ça me semble étrange :
    LD_RUN_PATH and LD_LIBRARY_PATH dans httpd.conf
    ce sont des variables d'environnement. Je ne crois pas qu'on puisse les spécifier dans httpd.conf.
    C'est au niveau de l'environnement d'apache (shell) qu'il faut les définir.

  3. #3
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 466
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut
    Ton module MySQL client est-il loadé par apache ? Tu devrais avoir une ligne LoadModule dans ton fichier httpd.conf correspondant au module client mysql.

  4. #4
    Membre habitué
    Inscrit en
    Juillet 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 12
    Par défaut
    A bubulemaster :

    Merci pour ta réponse.

    Ça se fait, si j'ai bien compris, avec SetEnv.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <Directory "/opt/lampp/cgi-bin">
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
        SetEnv LD_LIBRARY_PATH /usr/lib
        SetEnv LD_RUN_PATH /usr/lib
    </Directory>
    Comme ça ne fonctionne pas, j'ai certainement mal compris.

    A wormful_sickfoot :

    Je devrais avoir une ligne LoadModule dans mon fichier httpd.conf correspondant au module client mysql ? Ça, c'est une piste intéressante ! Merci ! À quoi devrait ressembler cette ligne ? À quelque chose comme "LoadModule mysql /usr/lib/libmysqlclient.so" ?

  5. #5
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 466
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut
    Citation Envoyé par Redlet Voir le message
    A wormful_sickfoot :

    Je devrais avoir une ligne LoadModule dans mon fichier httpd.conf correspondant au module client mysql ? Ça, c'est une piste intéressante ! Merci ! À quoi devrait ressembler cette ligne ? À quelque chose comme "LoadModule mysql /usr/lib/libmysqlclient.so" ?
    Une ligne comme ça oui pas moyen de trouver de doc valable sur Google, tout le monde utilise PHP qui se charge de charger Mysql lui-même... Ca devrait fonctionner en rajoutant la ligne que tu cites plus haut (en vérifiant que le chemin vers le .so est bon).

Discussions similaires

  1. Session Perl/CGI avec MySQL
    Par LiNuXaDDiKt dans le forum Web
    Réponses: 3
    Dernier message: 18/02/2008, 06h24
  2. CGI et MySQL
    Par pat94 dans le forum Web
    Réponses: 1
    Dernier message: 13/10/2007, 21h23
  3. [MySQL] PHP5 en CGI et MySQL 5
    Par Mogwaï dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/10/2007, 11h51
  4. [web] cgi dbi MySQL : créer un tableau ?
    Par toctof dans le forum Web
    Réponses: 7
    Dernier message: 03/12/2004, 09h59
  5. [Kylix] [cgi] pb déploiement appli avec connexion MySQL [rés
    Par Nepomiachty Olivier dans le forum EDI
    Réponses: 3
    Dernier message: 06/08/2002, 20h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo