DBD-Installer: Apache 2 / Perl library mitteilen

Hallo,

ich hab nun mit hängen und würgen mein Perl-Modul installiert bekommen, welches nun ohne Apache2 auch funktioniert. Leider

Wie mache ich nun meinem Apache2 klar, wo sich die library befindet?

Tue Jun 09 12:15:27 2009] [error] [client 145.16.169.76] install_driver(mysql) failed: Can't load '/usr/perl5/site_perl/5.8.4/i86pc-solaris-64int/auto/DBD/mysql/mysql.so' for module DBD::mysql: ld.so.1: perl: fatal: libmysqlclient.so.15: open failed: No such file or directory at /usr/perl5/5.8.4/lib/i86pc-solaris-64int/DynaLoader.pm line 230.
[Tue Jun 09 12:15:27 2009] [error] [client 145.16.169.76]  at (eval 5) line 3
[Tue Jun 09 12:15:27 2009] [error] [client 145.16.169.76] Compilation failed in require at (eval 5) line 3.
[Tue Jun 09 12:15:27 2009] [error] [client 145.16.169.76] Perhaps a required shared library or dll isn't installed where expected

Hab schon ...
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib:/usr/local/mysql/lib/mysql
export LD_LIBRARY_PATH
... in mein Apache2-Starscript eingetragen. => Leider ohne Erfolg.

Danke für Tipps.

Gruss
DBD-Install

  1. Hallo,

    davon mal ausgehend, dass die Bibliothek am angegebenen Ort ist, fallen mir nur zwei Dinge auf:

    1.) Eintragen des LD_LIBRARY_PATH in der apachectl ist der falsche Weg. Dafür ist der file envvars zuständig. (Aber vermutlich meintest Du das sogar.) Abhängig davon ob Du Deinen Eintrag vor der 46. Zeile vorgenommen hast, wird der gesetzte Eintrag u. U. gelöscht.

    2.) Probiere mal die Apache-Direktive LoadFile aus.

    Mehr wüsste ich auch nicht. ;(

    Gruß aus Berlin!
    eddi

    --
    VEB Opel, Geruchsproben und Stasi 2.0, Zensur...
    IHR WOLLTET MERKEL!
    1. Hallo,

      davon mal ausgehend, dass die Bibliothek am angegebenen Ort ist, fallen mir nur zwei Dinge auf:

      1.) Eintragen des LD_LIBRARY_PATH in der apachectl ist der falsche Weg. Dafür ist der file envvars zuständig. (Aber vermutlich meintest Du das sogar.) Abhängig davon ob Du Deinen Eintrag vor der 46. Zeile vorgenommen hast, wird der gesetzte Eintrag u. U. gelöscht.

      Nee, ich hatte das wirklich ordinär im startscript gesetzt.
      Hab aber dank deinen Hinweis das hier gefunden: http://httpd.apache.org/docs/2.2/mod/mod_env.html

      Und das hier mal in die conf eingetragen ...
      SetEnv LD_LIBRARY_PATH '/usr/local/mysql/lib/mysql'
      PassEnv LD_LIBRARY_PATH_64

      Ohne Erfolg.

      Wobei ich nicht verstehe, dass mir die gesetzen ENV-Variablen nicht angezeigt werden:

      print "Content-type: text/plain; charset=iso-8859-1\n\n"; foreach $var (sort(keys(%ENV))) {  
          $val = $ENV{$var};  
          $val =~ s|\n|\\n|g;  
          $val =~ s|"|\\"|g;  
          print "${var}=\"${val}\"\n";  
      }
      

      Du sagtest etwas vom File envvars ... wo sollte das hin und wie ist die Syntax? Denn unter /etc/apache2 (wo die conf liegt) gibt es so ein file nicht.

      1. Re:

        Also, sortieren wir das ganze mal: Du benutzt ein Unix mit einem älteren Perl. Der Pfad zu den BIBLIOTHEKEN VON PERL ist /usr/perl5/5.8.4/lib bzw. /usr/perl5/5.8.4/lib/i86pc-solaris-64int.

        Warum um alles in der Welt versuchst Du dann aus /usr/local/mysql/lib/mysql irgendwas zu laden? Suche im Pfad, also auch in den Unterverzeichnissen /usr/perl5/5.8.4/lib nach einer Bibliothek "mysql.so". Ist da keine, oder lässt sie sich gar nicht einbinden, bau Dir Perl (vielleicht dann version 5.10.0) neu!

        | 1.) Eintragen des LD_LIBRARY_PATH in der apachectl ist der falsche Weg. Dafür ist der file envvars zuständig. (Aber vermutlich meintest Du das sogar.) Abhängig davon ob Du Deinen Eintrag vor der 46. Zeile vorgenommen hast, wird der gesetzte Eintrag u. U. gelöscht.

        Nee, ich hatte das wirklich ordinär im startscript gesetzt.

        Nur so am Rande: Guck in die apachectl hinein. Bei einer Installation aus den Sourcecode finden sich in dem Shellscript folgende Zeilen:

        if test -f /pfad/zu/apache/bin/envvars; then  
          . /pfad/zu/apache/bin/envvars  
        fi
        

        In der default envvar steht dann folgendes:

        LD_LIBRARY_PATH="/pfad/zu/apache/lib:$LD_LIBRARY_PATH"  
        export LD_LIBRARY_PATH
        

        Das ist also der eigentliche Weg, LD_LIBRARY_PATH zu setzten.

        Gruß aus Berlin!
        eddi

        --
        VEB Opel, Geruchsproben und Stasi 2.0, Zensur...
        IHR WOLLTET MERKEL!