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
- Connected to mandator: 1 (Aichtal)
-
-
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
- Connected to mandator: 1 (Kunde)
-
-
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