PHP-Fehler beim Import



  • Hallo zusammen,

    ich habe die aktuellste Version von i-doit auf einem Server mit Scientific Linux 6.5 installiert.

    DAs Interface sieht auch gut aus, soweit keine Probleme. Ich habe auf 2 Client-Computern mit Windows XP die XML-Datei erzeugt, kann diese aber nicht importieren.

    Wenn ich den Import über die Web-Oberfläche probiere, kommen nur die folgenden Zeilen:

    • Logging in..

      • Connected to mandator: 1 (Aichtal)
        [2014-10-01 13:48:47] NOTICE: i-doit import
        [2014-10-01 13:48:47] NOTICE: Import handler initialized at 2014-10-01 13:48:47

      Wenn ich den Import über das Script mache, dann wird folgende PHP-Fehlermeldung angzeigt:

      • Logging in..
      • Connected to mandator: 1 (Kundenname)
        [2014-10-01 13:37:11] NOTICE: i-doit import
        [2014-10-01 13:37:11] NOTICE: Import handler initialized at 2014-10-01 13:37:11
        PHP Fatal error:  Call to undefined function mb_detect_encoding() in /var/www/html/i-doit/src/handler/isys_handler_import.class.php on line 247

      Wenn ich in das Script schaue, dann lautet die Zeile 247:

      if(mb_detect_encoding($l_file) == 'UTF-8')

      Vermutlich wird die Variable l_file schuld an der Misere sein… aber tiefer bin ich nicht eingestiegen.

      Wie kann ich hier vorgehen? Kann jemand helfen?

      Vielen Dank im voraus und viele Grüße,

      Frank



  • Hallo Frank,

    der Fehler wird dir dargestellt weil deine PHP Umgebung die "mb_detect_encoding" Funktion nicht finden kann. Diese Funktion ist Bestandteil der "Multibyte String" Bibliothek ("php-mbstring") und wird benötigt um herauszufinden ob der Import mit UTF-8 kodierten Daten arbeitet oder nicht.

    Du müsstest diese Bibliothek nachträglich installieren.

    Viele Grüße
    Leo



  • Hallo Leo,

    vielen Dank, das habe ich gemacht, nun kommt leider der nächste Fehler:

    • Logging in..

      • Connected to mandator: 1 (Kunde)
        [2014-10-02 08:59:05] NOTICE: i-doit import
        [2014-10-02 08:59:05] NOTICE: Import handler initialized at 2014-10-02 08:59:05
        [2014-10-02 08:59:05] NOTICE: Load import file imports/pc-075-1001592.xml.
        PHP Fatal error:  Call to a member function attributes() on a non-object in /var/www/html/i-doit/src/classes/import/handler/isys_import_handler_cmdb.class.php on line 720

      Vielleicht bin ich zu wenig PHP-erfahren… generell laufen müsste das doch in dieser Umgebung, oder?  (Scientific Linux 6.5, 64 Bit, genügend RAM und Disk Space).

      Ich habe probiert, den apt-get-Befehl aus dem Installationsabschnitt im Wiki auf "yum install ... " umzusetzen, was meistens auch geklappt hat. Die ganzen PHP-Pakete sind bei Scientific Linux ohne die Zahl 5, sonst hat es fast gepasst. Eine Ausnahme gab es, die ich mir angestrichen habe: Das Paket libapache2-mod-php5 habe ich hier nicht gefunden.

      Hast Du mir noch einen Tipp?

      Vielen Dank im Voraus und viele Grüße,

      Frank



  • Kleiner Nachtrag:  als "Konsolenmensch" probiere ich diese Lösung bevorzugt… im Web-Interface hat der Import jetzt gerade gelappt nach der Installation von php-mbstring.

    Vielen Dank und viele Grüße,

    Frank



  • Hallo Frank,

    was für eine PHP Version ist denn im Einsatz? Das lässt sich über die Konsole mit dem Befehl "php -v" herausfinden.
    Wir setzen mindestens die Version 5.3.8 voraus - ideal wäre natürlich eine etwas aktuellere Version (5.4.x oder 5.5.x).

    Der beschriebene Fehler könnte allerdings auch aufgrund einer beschädigten XML Datei auftreten. Könntest du überprüfen ob die Datei "imports/pc-075-1001592.xml" über die folgende Struktur verfügt:

    
     <isys_export><datetime>2014-10-02 14:39:02</datetime>
          <mandator language="de" id="1"></mandator>
          <type>isys_export_type_xml</type></isys_export> 
    

    Speziell geht es um die Zeile <mandator language="de" id="1"></mandator>… Laut dem PHP Skript existiert das "mandator" Tag oder dessen Attribute nicht.

    Viele Grüße
    Leo



  • Hallo Leo,

    entschuldige bitte die späte Rückmeldung, mich hatte es ziemlich erwischt.

    Unsere PHP-Version ist:
    PHP 5.3.3 (cli) (built: Sep 30 2014 05:09:15)

    Ich habe "nur" die normalen Scientific-Linux-Repositories konfiguriert. Sollte ich dann das PHP manuell überschreiben und auf eine höhere Version aktualisieren?

    Aber auch die XML-Datei hat wohl ihre Probleme, zumindest sieht sie nicht so aus, wie es von Dir geschildert wurde… ich füge mal den Anfang ein:

    
    ]>
     <computer><hostname>pc-075</hostname>
    <datetime>02.10.2014 11:53:20</datetime>
    
     <component><type>Model</type>
    <name>Model</name>
    <attr><name>Manufacturer</name><value>Hewlett-Packard</value></attr>
    <attr><name>Model</name><value>HP xw4300 Workstation</value></attr>
    <attr><name>SystemType</name><value>X86-based PC</value></attr></component></computer> 
    

    Danke nochmal und viele Grüße,

    Frank



  • Hallo Frank,

    gar kein Problem! Gut, das du den Anfang der XML Datei eingefügt hast - ich dachte die ganze Zeit wir reden über die von i-doit selbst erstellten XML Dateien 🙂 Aber das sieht mir eher nach H-Inventory aus. Hm, das macht es etwas schwieriger… Mir ist hier kein Fehler bekannt.

    Die PHP Umgebung auf einen aktuellen Stand zu heben ist aber sicherlich eine gute Idee. Für i-doit empfehlen wir eine Version über 5.3.8 - am besten auf PHP 5.4.x oder 5.5.x (PHP 5.3.x wird nicht mehr weiter entwickelt).

    Viele Grüße
    Leo



  • Hallo Leo,

    es scheint zu funktionieren. Ich habe PHP mit einem anderen Repository auf 5.4 aktualisiert, habe drei XML-Dateien erstellt und diese importiert.

    Du hast Recht, ich habe das mit hinventory gemacht. Spricht da was dagegen? Ist das ok?  Sieht eigentlich ganz gut aus, es sind 3 Desktops mit jeder Menge Applications enthalten. Nur was nicht funktioniert hat ist, das ganze Remote zu machen, also in die Datei computer.txt eine Remote-Maschine einzutragen. Aber bei 28 PCs ist das handelbar, dass ich überall kurz vor Ort gehe.

    Danke für die Hilfe und viele Grüße,

    Frank



  • Hallo Frank,

    nein das ist gar kein Problem 🙂 Schließlich unterstützen wir die H-Inventory XML Dateien. Freut mich zu lesen, das es nun funktioniert! Bezüglich der Remote-Problematik kann ich leider nicht unterstützen - das liegt dann wohl an H-Inventory.

    Viele Grüße
    Leo


Log in to reply
 

Looks like your connection to Community was lost, please wait while we try to reconnect.