Ankündigung

Einklappen
Keine Ankündigung bisher.

exec() "erfindet" Fehler

Einklappen

Neue Werbung 2019

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

  • exec() "erfindet" Fehler

    Ich habe eine Funktion geschrieben, die einen Konsolenbefehl ausgibt um einen Dump aus einer MySQL-Datenbank zu erstellen.

    Der wesentliche Code sieht so aus:
    PHP-Code:
    $command 'mysqldump --defaults-file="'.$conf.'" --events --routines --triggers '.$db.' > "'.$dbpath.'"';    
    exec($command$out$return);
    return 
    $return
    $conf enthält den Pfad (realpath) zur Datei "mysql.conf" in der sich die Anmeldedaten für MySQL befinden.
    $dbpath enthält den Pfad zur SQL-Datei, die erstellt werden soll.

    Bis gestern gab exec() in der Variablen $return "0" zurück (operation successfull). Heute erhalte ich immer eine "2", was laut dieser Liste "The system cannot find the file specified." bedeutet.
    Was mich irritiert: der Dump wird am gewünschten Ort erstellt und enthält auch alle Daten, die er enthalten soll. Der Fehlercode kann sich also weder auf die Conf-Datei (ohne die würde die Datenbankverbindung ja nicht funktionieren), noch auf die SQL-Datei (die soll ja erstellt werden) beziehen. Ich erhalte also eine Fehlermeldung ohne Fehler.
    Wieso?

    Edit: Ich arbeite mit Windows 10 und WAMP

  • #2
    Warum siehst du dir nicht die Fehlermeldung an, die mysqldump vermutlich ausgibt?

    Kommentar


    • #3
      Gab leider keine Fehlermeldung.
      Aber ich habe herausgefunden worans lag: ich habe vergessen dem MySQL-Benutzer Berechtigung für
      Code:
      LOCK TABLES
      zu geben

      PS: Die Codes in der Liste (siehe Link im ersten Beitrag) scheinen hier nicht zutreffend zu sein. Kennt wer eine Möglichkeit zu eruieren, was diese Codes bei exec() bedeuten? Hab bei google leider nichts gefunden.

      Kommentar


      • #4
        Zitat von MrChangelog Beitrag anzeigen
        Gab leider keine Fehlermeldung.
        Irgendwie bezweifle ich das.

        Zitat von MrChangelog Beitrag anzeigen
        Die Codes in der Liste (siehe Link im ersten Beitrag) scheinen hier nicht zutreffend zu sein. Kennt wer eine Möglichkeit zu eruieren, was diese Codes bei exec() bedeuten? Hab bei google leider nichts gefunden.
        Erster Treffer mit Google:

        https://www.quora.com/Where-can-I-fi...ump-exit-codes

        Kommentar


        • #5
          Das ist doch bestimmt hiermit verbandelt:
          https://www.php.de/forum/webentwickl...ockiert-unlink

          Der Verdacht auf die race condition erhärtet sich... Lass das löschen (erstmal) oder lagere es in einen eigenen Prozeß aus...
          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

          Kommentar

          Lädt...
          X