Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > d667a145d78a93cee78c5358ca99c039 > files > 73

howto-text-nl-2006-5mdv2010.0.noarch.rpm

  Verbinden met MS SQL 6.x+ via Openlink/PHP/ODBC mini-HOWTO
  Zili Zhang, silen@silen.net
  Vertaald door: Ellen Bokhorst, bokkie@nl.linux.org
  3.0, 15-07-1999

  Hoe een verbinding te maken met een MS SQL 6.x+ databaseserver via
  ODBC functies van PHP3 (3.0.1x of hoger) gecompileerd met Openlink
  drivers onder Linux.
  ______________________________________________________________________

  Inhoudsopgave


  1. Introductie

     1.1 Copyright
     1.2 Disclaimer

  2. Openlink

     2.1 Op de client
     2.2 Op de server
     2.3 Configuratie voor test
     2.4 Test met

  3. PHP

  4. Voorbeeld

  5. FAQ



  ______________________________________________________________________

  1.  Introductie

  In dit document wordt beschreven hoe een verbinding te maken met een
  MS SQL 6.x+ databaseserver via ODBC functies van PHP3 (3.0.1x of
  hoger) gecompileerd met Openlink drivers onder Linux.

  In de Unix wereld hebben de mensen vaak liever niets te maken met M$
  gerelateerde software. In de echte wereld kan je werkgever echter van
  je verlangen data in een MS SQL database onder NT op te slaan en
  webtoepassingen onder Linux uit te voeren. Wat te doen?  Ontslag nemen
  of de tijd nemen om dit document te lezen?  Als je voor het laatste
  kiest, beloof ik je een gedetailleerde leidraad, zodat je die baan nog
  een tijdje aan kunt houden. Het is een Hoe-te-doen leidraad, geen
  Waarom-zo leidraad.  Dus vraag me niet waarom het abc moet zijn en
  niet cba. Dat weet ik ook niet.

  PHP wordt onder webprogrammeurs steeds populairder, hoofdzakelijk
  omdat het zo kan worden geconfigureerd dat het met diverse databases
  zoals Oracle, MySQL, Solid enzovoort een verbinding tot stand kan
  brengen. Maar bij een MS SQL server, gaat het om een ander probleem.
  Alhoewel je PHP's Sybase-ct ondersteuningsfeatures kunt gebruiken om
  een directe verbinding met MSSQL te maken, geven veel mensen (ik in
  ieder geval) de voorkeur aan een verbinding via ODBC.

  Openlink ODBC middleware aanpassend, kun je gebruik maken van die
  ODBC_xxxx functies om alle databases te benaderen waar Openlink een
  driver voor heeft.  Je moet hiervoor de Openlink Linux client en
  Server middleware installeren en PHP opnieuw compileren dat het ODBC
  functies ondersteunt.


  1.1.  Copyright

  Copyright (c) 1999 door Zili Zhang

  Kopieer en distribueer dit document gerust (of geef het weg) in elk
  gewenst formaat.  Je wordt verzocht correcties en/of opmerkingen naar
  de huidige beheerder door te sturen. Je mag er een afgeleide werk van
  maken en het distribueren op voorwaarde dat je:


  ·  Het afgeleide werk (in de meest geschikte vorm, zoals sgml)
     opstuurt naar de LDP (Het Linux Documentatie Project) of
     vergelijkbaar zodat het op Internet kan worden geplaatst. Laat de
     LDP weten waar het beschikbaar is als het niet de LDP is waar je je
     document naar opstuurt.

  ·  Licentieer het afgeleide werk met dezelfde licentie of gebruik GPL.
     Voeg een copyrightmelding in en op z'n minst een verwijzing naar de
     gebruikte licentie.

  ·  Geef krediet aan vorige auteurs en mensen die een belangrijke
     bijdrage leverden.

  Als je een afgeleid werk overweegt anders dan een vertaling, dan wordt
  je verzocht je plannen te bespreken met de huidige beheerder.

  1.2.  Disclaimer

  Dit document wordt je in goed vertrouwen aangeboden aangezien het
  alleen uit een veilige configuratie en procedures bestaat.  Er wordt
  geen verantwoordelijkheid door de auteur geaccepteerd voor enig
  verlies of schade op welke wijze dan ook veroorzaakt door een persoon
  of uitrusting, als een direct of indirect gevolg van het opvolgen van
  deze instructies.

  Dit document werd afgeleid van het gewone tekstbestand te vinden op
  http://www.silen.net/openlink-php-odbc.txt
  <http://www.silen.net/openlink-php-odbc.txt>.

  2.  Openlink

  Deze stap is een beetje gecompliceerd. Er zijn zowel op de Linux
  client als de NT server een aantal werkzaamheden te verrichten.

  2.1.  Op de client


  ·  Download install.sh en likoxglc.taz (voor een libc6 systeem) of
     likoxxxx.taz (voor een libc5 systeem) vanaf
     ftp://www.openlinksw.com/ <ftp://www.openlinksw.com/>.

  ·  mkdir /usr/local/openlink

  ·  Kopieer install.sh en likoxglc.taz naar /usr/local/openlink

  ·  cd /usr/local/openlink

  ·  sh install.sh, het install script zal je vragen om de eigenaar en
     groep van het programma. Bestanden worden geëxtraheerd naar de
     odbcsdk directory onder /usr/local/openlink en .odbc.ini gekopieerd
     naar de homedirectory van de eigenaar.

  2.2.  Op de server



  ·  Download ntadm65x.zip vanuit ftp://www.openlinksw.com/
     <ftp://www.openlinksw.com/>, naar je NT-server.

  ·  unzip ntadm65x.zip

  ·  cd disk1 - directory waar je het package decomprimeert.

  ·  voer setup uit en volg de instructies om de Openlink middleware te
     installeren.

  ·  denk eraan de Openlink request broker vanuit het opstartmenu of het
     service controlpanel op te starten.

  2.3.  Configuratie voor test


  ·  bewaar het .odbc.ini bestand in je homedirectory.

  ·  kopieer udbc.ini vanuit de bin directory van de Openlink middleware
     installatiedirectory naar de directory /etc op de client.

  ·  pas /etc/udbc.ini aan.  Wijzig in de sectie [dsn_sql6], de Host,
     Database, UserName en Password velden overeenkomstig je
     serverinstellingen.  Hier is een deel van mijn /etc/udbc.ini:


         [dsn_sql6]
         Host            = 10.0.0.1
         ServerType      = sql6
         ;ServerOptions  =
         Database        = pubs
         ;FetchBufferSize = 30
         UserName        = sa
         Password        = xxxxxxx




  ·  voeg aan je omgeving
     LD_LIBRARY_PATH='/usr/local/openlink/odbcsdk/lib' toe en exporteer
     deze variabele. Typ onder de csh-shell: setenv LD_LIBRARY_PATH
     /usr/local/openlink/odbcsdk/lib

  2.4.  Test met odbctest


  ·  cd /usr/local/openlink/odbcsdk/examples

  ·  ./odbctest

  ·  typ: dsn=dsn_sql6

  ·  wanneer 'sql>' verschijnt.  Je kunt nu wat sql opdrachten uitvoeren
     om de verbinding te testen.

  3.  PHP

  Nu hebben we Openlink en kunnen we verder met de compilatie van PHP.
  Voor deze versie is PHP 3.0.10 of hoger nodig om het werkend te
  krijgen.

  ·  Download php-3.0.11.tar.gz vanaf http://www.php.net
     <http://www.php.net/>.

  ·  Voer de volgende stappen uit:

  gzip -dc php-3.0.11.tar.gz|tar -xof -

  cd php-3.0.11

  ./configure --with-openlink (--with-mysql --with-gd=/usr/local/gd1.3 --enable-track-vars)

      NOOT: Mijn configuratie is ingesteld PHP in CGI modus te draaien,
            met bovendien ondersteuning voor mysql. Jouw configuratie kan
            er anders uitzien.

  make --silent

      NOTE: Maak je geen zorgen bij eventuele waarschuwingsmeldingen.

  make install




  Het uitvoerbare bestand php zal in /usr/local/bin worden
  geïnstalleerd. Kopieer voor de uitvoering van php de library bestanden
  /usr/local/openlink/odbcsdk/lib naar /usr/lib zodat het makkelijker is
  voor php om de openlink library's te vinden (ik weet dat er betere
  methoden zijn).

  4.  Voorbeeld

  Raadpleeg alsjeblieft de PHP handleiding voor ODBC functies. Hier is
  mijn voorbeeldcode odbc.php3:  (odbc_num_rows() zal niets retourneren,
  dus je moet herhaaldelijk odbc_fetch_row() aanroepen om aan het aantal
  te komen.)



































  <?
  /* een aantal omgevingsvariabelen, plaats een commentaarteken voor een
   * van deze regels om te testen of het dan nog werkt
   */
  putenv("LD_LIBRARY_PATH=/usr/local/openlink/odbcsdk/lib");
  putenv("UDBCINI=/etc/udbc.ini");
  putenv("ODBCINI=/root/.odbc.ini");
  putenv("DebugFile=/tmp/udbc.out");      // debug trace output

  $dsn="DSN=dsn_main";    // noot 'DSN=' is vereist
  $user="sa";
  $password="xxxxxxx";

  $sql="SELECT * FROM titles";

  /* directly execute mode                        */
  if ($conn_id=odbc_connect("$dsn",$user,$password)){
          echo "connected to DSN: $dsn<br><br>";
          if($result_id=odbc_do($conn_id, $sql)) {
                  echo "executing '$sql'<br><br>";
                          $num_fields=odbc_num_fields($result_id);
                          if($num_fields>0){
                                  echo "Number of fields:
  $num_fields<br>";
                                  for($i=1;$i<=$num_fields;$i++){

  $field_name[$i-1]=odbc_field_name($result_id,$i);
                                  }
                                  $num_rows=0;
                                  while(odbc_fetch_row($result_id)){
                                          for($i=1;$i<=$num_fields;$i++){

  $result[$num_rows][$field_name[$i-1]]=odbc_result($result_id,$i);
                                          }
                                          $num_rows++;
                                  }
                                  echo "Number of rows: $num_rows<br>";
                          }else{
                                  echo "not a field returned. <br><br>";
                          }
                  echo "Results:<br>";
                  for($i=0;$i<sizeof($result);$i++){
                          while(list($key,$value)=each($result[$i])){
                                  echo "$i:$key=$value<br>";
                          }
                  }
                  echo "freeing result<br><br>";
                  odbc_free_result($result_id);
          }else{
                  echo "can not execute '$sql'<BR><BR>";
          }
          echo "closing connection $conn_id";
          odbc_close($conn_id);
  }else{
          echo "can not connect to DSN: $dsn<br><br>";
  }
  ?>




  5.  FAQ




  ·  Werkt deze exacte procedure ook voor MSSQL 7.0?  Ja, Openlink zal
     hun software naar 7.0 upgraden, maar ik weet niet wanneer.

  ·  Ik volgde dit document stap-voor-stap op om de openlink drivers te
     installeren, maar ik eindigde bij de stap "installeer
     ntadm65x.zip". Ndat ik ntadm65x installeerde, probeerde ik de
     OpenLink Request Broker te starten en kreeg de foutmelding:



        unable to open the service control manager <5>
        press RETURN to exit oplrqb




  Kun je me alsjeblieft vertellen hoe ik dat probleem kan corrigeren?
  Dit zou een probleem met NT zelf kunnen zijn. Probeer het op te lossen
  door de computer opnieuw op te starten en start de openlink service
  dan vanuit de Control Panel/service manager.