6 / 16
Mar 20

Hallo Zusammen,

seit dem letzten Update (23.1.20250307) bekommen wir bei der Benutzerstellung, folgende Fehlermeldung:
grafik

Ich habe testweise die Version 23.1.20250113 zurĂŒckgespielt, da tritt dieses Problem nicht auf.

Wie bekommen wir das Problem gelöst?

Danke schon mal fĂŒr eure Hilfe.

Gruß Andy

Die Fehlermeldung besagt, das eines der Felder der im LDAP upgedated werden soll, ein mehrfacher Wert erlaubt, aber das Array nicht nur numerische Indices hat.
Ich habe mal kurz im Code geschaut kann da aber auf die schnelle nichts finden.
Ich glaube auch nicht so ganz, das wir da was geĂ€ndert haben, sondern ehr das PHP da jetzt einen strengeren Check eingebaut hat der einen Fehler wirf, was frĂŒher einfach ignoriert wurde.

Frage ist was fĂŒr ein LDAP System ist das, welche Mail Attribute verwendet ihr da und was genau machst Du, wenn es zu dem Fehler kommt.

Du kannst unter Admin > App Konfiguration > Sicherheit ganz unter mal die RĂŒckverfolgung / Trace fĂŒr Exceptions einschalten, dann sieht man evtl. etwas mehr.

Ansonsten kannst Du natĂŒrlich auch gerne ein Support Budget kaufen, und wir schauen uns das zusammen an.

Ralf

grafik
Das kommt raus, wenn ich RĂŒckverfolgung aktiviere.

Ich versuche standardmĂ€ĂŸig nur einen Nutzer anzulegen. Gebe dafĂŒr Vorname, Nachname, Benutzername, Passwort, Hauptgruppe und Gruppen ein.

Wir nutzen “OpenLDAP: slapd 2.5.18+dfsg-0ubuntu0.22.04.2”. Ich kann am Wochenende gerne ein Update davon durchfĂŒhren und schauen, ob es das Problem behebt, wenn die RĂŒckverfolgung nichts anderes Preis gibt, was ich jetzt nicht herauslesen kann?!

Da wĂŒrde ich mir nichts von erwarten, der Fehler kommt aus dem PHP, noch bevor ĂŒberhaupt mit dem LDAP gesprochen wird.

Du kannst mal mehr debugging einschalten:

docker exec egroupware sed -i 's/var $debug = false;/var $debug = true;/' /usr/share/egroupware/api/src/Mail/Smtp/Ldap.php
docker exec egroupware kill -s usr2 1
/etc/egroupware-docker/egroupware-logs.sh

Und danach nochmal einen neuen User anlegen und die Ausgabe hier posten.

Ralf

PHP message: Ein Fehler ist aufgetreten! (ValueError): ldap_mod_replace(): Argument #3 ($entry) must be an array with numeric keys (0);
PHP message: File: /api/src/Mail/Smtp/Ldap.php, Line: 262;
PHP message: #0 /usr/share/egroupware/api/src/Mail/Smtp/Ldap.php(262): ldap_mod_replace();
PHP message: #1 /usr/share/egroupware/api/src/Mail/Hooks.php(94): EGroupware\Api\Mail\Smtp\Ldap->addAccount();
PHP message: #2 /usr/share/egroupware/api/src/Mail/Hooks.php(74): EGroupware\Api\Mail\Hooks::run_plugin_hooks();
PHP message: #3 [internal function]: EGroupware\Api\Mail\Hooks::addaccount();
PHP message: #4 /usr/share/egroupware/api/src/Hooks.php(138): call_user_func();
PHP message: #5 /usr/share/egroupware/api/src/Hooks.php(82): EGroupware\Api\Hooks::single();
PHP message: #6 /usr/share/egroupware/admin/inc/class.admin_cmd_edit_user.inc.php(224): EGroupware\Api\Hooks::process();
PHP message: #7 /usr/share/egroupware/admin/inc/class.admin_cmd.inc.php(239): admin_cmd_edit_user->exec();
PHP message: #8 /usr/share/egroupware/admin/inc/class.admin_account.inc.php(242): admin_cmd->run();
PHP message: #9 /usr/share/egroupware/addressbook/inc/class.addressbook_ui.inc.php(2424): admin_account::addressbook_pre_save();
PHP message: #10 /usr/share/egroupware/api/src/loader/deprecated_factory.php(154): addressbook_ui->edit();
PHP message: #11 /usr/share/egroupware/api/src/Etemplate.php(451): ExecMethod();
PHP message: #12 [internal function]: EGroupware\Api\Etemplate::ajax_process_content();
PHP message: #13 /usr/share/egroupware/api/src/Json/Request.php(205): call_user_func_array();
PHP message: #14 /usr/share/egroupware/api/src/Json/Request.php(106): EGroupware\Api\Json\Request->handleRequest();
PHP message: #15 /usr/share/egroupware/json.php(130): EGroupware\Api\Json\Request->parseRequest();
PHP message: #16 {main};
PHP message: # Instance=default, User=aknoebl, Request=POST https://egwtest.verbund-service.de/egroupware/json.php?menuaction=addressbook.addressbook_ui.

Dann kommt quasi das gleiche raus?

Ja, der ValueError wird vor der Debug Ausgabe geworfen :frowning:

Ich fange den jetzt, logge ihn und liefere false zurĂŒck, so wie das (vermutlich) bisher auch passiert ist:

Spiel mal den Patch bei Dir ein:

curl https://github.com/EGroupware/egroupware/commit/179c364c2b81c138182ad396ab4d53a0d5289a94.patch | docker exec -i egroupware patch -p1 -d /usr/share/egroupware
docker exec egroupware kill -s usr2 1
/etc/egroupware-docker/egroupware-logs.sh

Und reproduziere den Fehler nochmal, dann sollten jetzt die Aufrufparameter gelogged werden (und der Fehler ignoriert).

Poste bitte mal das Log, damit ich den Fehler beheben kann.

Benutzt Ihr eigentlich das was wir da im LDAP eintragen fĂŒr Euren Mailserver?

Ralf

2025/03/20 10:33:08 [error] 21#21: *6002 FastCGI sent in stderr: "
PHP message: Ein Fehler ist aufgetreten! (Exception): ldap_mod_replace($ds, ‘uid=atesti,ou=People,dc=verbund,dc=zub’, {“mail”:“atesti@verbund.zub”,“objectclass”:[“top”,“person”,“organizationalPerson”,“inetOrgPerson”,“posixAccount”,“shadowAccount”]}) ldap_mod_replace(): Argument #3 ($entry) must be an array with numeric keys (0);
PHP message: File: /api/src/Mail/Smtp/Ldap.php, Line: 273;
PHP message: #0 /usr/share/egroupware/api/src/Mail/Hooks.php(94): EGroupware\Api\Mail\Smtp\Ldap->addAccount();
PHP message: #1 /usr/share/egroupware/api/src/Mail/Hooks.php(74): EGroupware\Api\Mail\Hooks::run_plugin_hooks();
PHP message: #2 [internal function]: EGroupware\Api\Mail\Hooks::addaccount();
PHP message: #3 /usr/share/egroupware/api/src/Hooks.php(138): call_user_func();
PHP message: #4 /usr/share/egroupware/api/src/Hooks.php(82): EGroupware\Api\Hooks::single();
PHP message: #5 /usr/share/egroupware/admin/inc/class.admin_cmd_edit_user.inc.php(224): EGroupware\Api\Hooks::process();
PHP message: #6 /usr/share/egroupware/admin/inc/class.admin_cmd.inc.php(239): admin_cmd_edit_user->exec();
PHP message: #7 /usr/share/egroupware/admin/inc/class.admin_account.inc.php(242): admin_cmd->run();
PHP message: #8 /usr/share/egroupware/addressbook/inc/class.addressbook_ui.inc.php(2424): admin_account::addressbook_pre_save();
PHP message: #9 /usr/share/egroupware/api/src/loader/deprecated_factory.php(154): addressbook_ui->edit();
PHP message: #10 /usr/share/egroupware/api/src/Etemplate.php(451): ExecMethod();
PHP message: #11 [internal function]: EGroupware\Api\Etemplate::ajax_process_content();
PHP message: #12 /usr/share/egroupware/api/src/Json/Request.php(205): call_user_func_array();
PHP message: #13 /usr/share/egroupware/api/src/Json/Request.php(106): EGroupware\Api\Json\Request->handleRequest();
PHP message: #14 /usr/share/egroupware/json.php(130): EGroupware\Api\Json\Request->parseRequest();
PHP message: #15 {main};
PHP message: # Instance=default, User=aknoebl, Req

Hier das neue Log.

Ok, war was ich dachte, der folgende Commit sollte da helfen:

Du musst den wie den anderen einspielen und der andere muss auch immer davor mit eingespielt werden, sprich wenn Du nicht neu gestartet hast, langt es den neuen Commit zusÀtzlich einzuspielen, sonst musst Du beide in Reihenfolge einspieln.

Bitte kurz Bescheid geben, ob dann im error-Log nichts mehr auftaucht, und ob Du die EMail Adresse im LDAP Àndern kannst.

Ralf

Ich habe den neuen Patch nun genauso eingefĂŒgt, wie den davor.

curl https://github.com/EGroupware/egroupware/commit/040c67f8da71d1d15f5f3fe700c7aafa9c53699c.patch | docker exec -i egroupware patch -p1 -d /usr/share/egroupware
docker exec egroupware kill -s usr2 1
/etc/egroupware-docker/egroupware-logs.sh

Da kommt aber genau die gleiche Ausgabe raus. Ich habe den Server vorher nicht neugestartet.

Die Mailadresse lĂ€sst sich im LDAP Ă€ndern und ein Account wird auch ohne sichtbare Fehlermeldung angelegt (wird ja durch deinen Commit unterdrĂŒckt, wenn ich das richtig verstanden habe).
Aber das Log schreibt weiterhin die Fehlermeldungen (beim Erstellen eines Benutzers).

Kann eigentlich nicht sein, poste die bitte nochmal.

Ralf

2025/03/20 15:58:09 [error] 27#27: *7604 FastCGI sent in stderr: "
PHP message: Ein Fehler ist aufgetreten! (Exception): ldap_mod_replace($ds, ‘uid=atesti,ou=People,dc=verbund,dc=zub’, {“mail”:[“atesti@verbund.zub”],“objectclass”:[“top”,“person”,“organizationalPerson”,“inetOrgPerson”,“posixAccount”,“shadowAccount”]}) ldap_mod_replace(): Argument #3 ($entry) must be an array with numeric keys (0);
PHP message: File: /api/src/Mail/Smtp/Ldap.php, Line: 277;
PHP message: #0 /usr/share/egroupware/api/src/Mail/Hooks.php(94): EGroupware\Api\Mail\Smtp\Ldap->addAccount();
PHP message: #1 /usr/share/egroupware/api/src/Mail/Hooks.php(74): EGroupware\Api\Mail\Hooks::run_plugin_hooks();
PHP message: #2 [internal function]: EGroupware\Api\Mail\Hooks::addaccount();
PHP message: #3 /usr/share/egroupware/api/src/Hooks.php(138): call_user_func();
PHP message: #4 /usr/share/egroupware/api/src/Hooks.php(82): EGroupware\Api\Hooks::single();
PHP message: #5 /usr/share/egroupware/admin/inc/class.admin_cmd_edit_user.inc.php(224): EGroupware\Api\Hooks::process();
PHP message: #6 /usr/share/egroupware/admin/inc/class.admin_cmd.inc.php(239): admin_cmd_edit_user->exec();
PHP message: #7 /usr/share/egroupware/admin/inc/class.admin_account.inc.php(242): admin_cmd->run();
PHP message: #8 /usr/share/egroupware/addressbook/inc/class.addressbook_ui.inc.php(2424): admin_account::addressbook_pre_save();
PHP message: #9 /usr/share/egroupware/api/src/loader/deprecated_factory.php(154): addressbook_ui->edit();
PHP message: #10 /usr/share/egroupware/api/src/Etemplate.php(451): ExecMethod();
PHP message: #11 [internal function]: EGroupware\Api\Etemplate::ajax_process_content();
PHP message: #12 /usr/share/egroupware/api/src/Json/Request.php(205): call_user_func_array();
PHP message: #13 /usr/share/egroupware/api/src/Json/Request.php(106): EGroupware\Api\Json\Request->handleRequest();
PHP message: #14 /usr/share/egroupware/json.php(130): EGroupware\Api\Json\Request->parseRequest();
PHP message: #15 {main};
PHP message: # Instance=default, User=aknoebl, R

das kam raus

Hat sich doch geÀndert, das Mail-Attribute ist jetzt ein Array (eckige Klammern), statt einem String.

Das Àndert aber gar nichts an dem Fehler.

Gerade die Antwort bekommen, da ist ein Fehler in PHP der mit der nÀchsten Version gefixed sein sollte:

Ralf

Du kannst ja mal einfach das PHP im Container updaten:

docker exec -it egroupware bash
apt-get update && apt-get upgrade
exit
docker restart egroupware

Dann sind die Commits von mir wieder raus, und Du solltest auf PHP 8.3.19 sein, in dem das Problem behoben ist.

Ralf

Besten Dank, damit hat es nun geklappt.

Habe es alles logischerweise auf dem Testserver gemacht. Kommt jetzt die Tage ein neuer eGW Container oder soll ich das letztere auf dem Produktivserver auch so umsetzen?