ODBC-Zugriff auf Access-Datenbank mit PHP

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • ODBC-Zugriff auf Access-Datenbank mit PHP

    Betriebsysteme Windows 2000 Prof. MS Acess 2000. Webserver Apache 2.0


    mittels PHP möchte ich über ODBC auf eine Access-DB (test.mdb)
    zugreifen (über einen System-DSN-Eintrag). Die Access-DB liegt auf
    einem anderen Recher <\\db-server\ordner\test.mdb>. Die
    System-DSN-Eintrag habe ich über "ODBC Administrator" unter
    Systemsteuerung gemacht <test_db>.

    die schritte:
    **************
    1. Ich verbinde erstmal den freigegebene Verzeichnis
    <\\db-server\ordner\> als Netzwerklaufwerk <M:> .

    2. Dann habe ich den System-DSN-Eintrag über "ODBC Administrator"
    gemacht <test_db>.


    wenn ich mein php-skript ausführe bekomme ich folgende fehlermeldung.


    Warning: odbc_connect(): SQL error: [Microsoft][ODBC Microsoft Access
    Driver] Das Microsoft Jet-Datenbankmodul kann die Datei '(unbekannt)'
    nicht öffnen. Sie ist bereits von einem anderen Benutzer exklusiv
    geöffnet, oder Sie benötigen eine Berechtigung, um die Daten lesen zu
    können., SQL state S1000 in SQLConnect in C:\Programme\Apache
    Group\Apache2\htdocs\ubg\select.php on line 12
    Fehler beim Datenbankaufruf


    <?php

    $dsn = "test_db";
    $tabelle = "user";
    $uid = "";
    $pwd = "";

    $conn = odbc_connect($dsn,$uid,$pwd)
    or die ("Fehler beim Datenbankaufrufvvv");

    $result = odbc_exec($conn, "SELECT * FROM $tabelle");
    $i=1;

    while (odbc_fetch_row($result, $i)){
    echo $i. ". ". odbc_result($result, "kennung")."<br>";
    $i++;
    }

    ?>



    wenn meine datenbank lokal auf dem webserver liegt klappt alles
    wunderbar.



    ich habe folgende sachen im internet gefunden und ausprobiert:

    * Für den Zugriff werden keine Laufwerksbuchstaben unterstützt. In der
    ODBC-Konfiguration kann man aber nur Laufwerksbuchstaben auswählen.
    Also
    geht man in die Registry mit regedt32 auf den Schlüssel
    HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC_INI dort findet sich im
    entsprechenden
    Link das Feld DBQ. Hier ändert man den Pfad von z. B.
    "M:\test.mdb" auf "\\db-server\ordner\test.mdb".

    * Als nächstes muß man noch den Dienst (bei mir Apache) der auf die
    ODBC-Resource zugreift so konfigurieren, dass er mit einem
    Netzwerkgültigen
    Benutzernamen auf die Datenbank zugreift (per Default ist hier ein
    lokaler
    Systemnutzer hinterlegt).
    -> so hier habe ich zwar sachen ausprobiert aber ich bin mir
    nicht ganz sicher ob ich das richtig gemacht habe. ich habe unter
    "Dienste -> Apache2 -> Eigenschaften" und Register "Anmelden" gewählt.
    Hier habe ich dann unter "Anmelden als: " und "Diese Konto: " einen
    Benutzer gewählt der die Administrationsrechte besitzt eingestellt.


    das hat alles aber leider nichts gebracht.



    ich wäre super dankbar für ihre vorschläge.





  • #2
    Frage: liegen Apache und Access Datenbank auf einem Rechner?
    wenn nicht, bringt es nichts, sich mit Benutzernamen mit root rechten auf Deinem Rechner am anderen
    anzumelden, weil da hat er evtl. null rechte!Oder hab ich Dich falsch verstanden?
    Wenn, dann musst Du Dich als User mit Rechten auf dem DB-Server
    bzw. der Datenbank anmelden.
    Also schau nach einem User mit Adminrechten auf dem Rechner, auf dem die DB liegt und trag den ein.
    Wenn Du das schon gemacht hast und ich Dich falsch verstanden habe, dann sorry!
    Gruss Wendel
    Das Leben ist kein Ponyhof.

    Kommentar


    • #3
      Original geschrieben von Wendel
      Frage: liegen Apache und Access Datenbank auf einem Rechner?

      wenn nicht, bringt es nichts, sich mit Benutzernamen mit root rechten auf Deinem Rechner am anderen
      anzumelden, weil da hat er evtl. null rechte!Oder hab ich Dich falsch verstanden?
      Wenn, dann musst Du Dich als User mit Rechten auf dem DB-Server
      bzw. der Datenbank anmelden.
      Also schau nach einem User mit Adminrechten auf dem Rechner, auf dem die DB liegt und trag den ein.

      Wenn Du das schon gemacht hast und ich Dich falsch verstanden habe, dann sorry!
      Gruss Wendel


      Frage: liegen Apache und Access Datenbank auf einem Rechner?

      nein. sie liegen auf getrennten rechnern.


      Wenn, dann musst Du Dich als User mit Rechten auf dem DB-Server bzw. der Datenbank anmelden.
      Also schau nach einem User mit Adminrechten auf dem Rechner, auf dem die DB liegt und trag den ein.


      wie muss ich diesen eintrag denn machen? etwa so? :

      $dsn = "test_db";
      $tabelle = "user";
      $uid = "admin"; //Adminuser auf dem DB-Server
      $pwd = "pass"; //passwort

      $conn = odbc_connect($dsn,$uid,$pwd)


      ich glaube das habe ich ausprobiert aber das funktioniert leider nicht

      Kommentar


      • #4
        MOIN oezcanp,
        Das sieht Korrekt aus Deine Anmeldung.
        Aber sorry, die Fehlermeldung bezieht sich ja auf das öffnen der Datei und nicht auf den Zugriff
        auf den Datenbankserver.Dein Problem wird die rechtevergabe von Acces bzw. XP sein.
        Du musst die Zugriffsrechte(Eigenschaften) für den Ordner anpassen bzw. das Handling von Access.(scheinbar gibts da
        extra regelungen für Userzugriffe von außen. Es reicht nicht root zu sein!)-unter tools weitere Optionen - usw.
        Da kann man Dateien sperren oder exclusiv öffnen. Das ist aber kein PHP- problem!
        Frage mal unter Windows - Access oder XP.
        Ansonsten google "SQL S1000" Fehlercode.
        Ich hab dies gefunden,was Dir weiter helfen sollte.
        Fände es klasse, wenn Du auch die Lösung des Problems noch mal posten würdest. Kannst auch gerne nochmal nachfragen.
        Gruß Wendel
        P.S. evtl. melde ich mich nochmal bei Dir, weil wir haben hier das gleiche vor(Access Datenbank an Webanwendung anbinden)
        und keiner von uns hat das je gemacht! (MySql, MS-SQL,Oracel ja access nein)
        Das Leben ist kein Ponyhof.

        Kommentar


        • #5
          Der Lösungsvorschlag:


          Die Freigabe des Verzeichnisses bzw. des Access-files oder unter Eigenschaften -> Sicherheit den IUSR_Computername als Benutzer hinzuzufügen funktioniert nicht, weil Windows die Meldung

          "Ein Objekt namens IUSR_WEBPC wurde nicht gefunden. Überprüfen Sie die gewählten Objekttypen und den Pfad, und vergewissern Sie sich, dass Sie den Objektnamen richtig eingegeben haben, oder entfernen Sie dieses Objekt aus der Liste"

          ausgibt.

          ich habe zwar die möglichkeit unter access über
          Extras -> Sicherheit und Benutzer-/ und Gruppenberechtigung den usern rechte zu vergeben, aber dies hilft irgendwie auch nicht weiter.

          ich weiß auch nicht mehr weiter

          Kommentar


          • #6
            ich habs.


            es war alles richtig was ich bis jetzt gemacht habe. (siehe oben)


            ich habe einfach apache-dienst unter einen anderen user gestartet, der auch netzwerkrechte besitzt. bis jetzt lief es unter "system".

            unter dienste

            apache -> eigenschaften -> anmelden
            -> "dieses Konto" durchsuchen
            -> einen lokalen user wählen der netzwerkrechte hat
            bsp: "Administrator" (nur testzwecken)
            -> sie müssen den dienst dann neustarten.


            dann müsste es klappen.


            man bin ich froh dass es klappt.

            Kommentar

            Lädt...
            X