Idoit Open 1.9 und php7.0
-
Hallo zusammen,
heute habe ich ein Update von Idoit 1.8.3 auf Idoit 1.9 gemacht. Im selben Schritt habe ich dann von php 5.6 auf php 7.0 umgestellt, bekommen nach dem einloggen aber immer folgenden Fehler: Database error : php_network_getaddresses: getaddrinfo failed: Name or service not known
Im error.log vom apachen finde ich dann folgende Einträge:
[Thu Jun 01 14:46:05.357596 2017] [:error] [pid 18713] [client xxx.xxx.xxx.xxx:53478] PHP Warning: mysqli_connect(): (HY000/2002): No such file or directory in /var/www/src/classes/components/isys_component_database_mysqli.class.php on line 714, referer: https://xxx.xxx.xxx.xxx/?
[Thu Jun 01 14:46:05.358443 2017] [:error] [pid 18713] [client xxx.xxx.xxx.xxx:53478] PHP Warning: mysqli_connect(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /var/www/src/classes/components/isys_component_database_mysqli.class.php on line 617, referer: https://xxx.xxx.xxx.xxx/?
[Thu Jun 01 14:46:05.358556 2017] [:error] [pid 18713] [client xxx.xxx.xxx.xxx:53478] PHP Warning: mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in /var/www/src/classes/components/isys_component_database_mysqli.class.php on line 617, referer: https://xxx.xxx.xxx.xxx/?Stelle ich wieder auf php 5.6 um funktioniert alles wunderbar.
Habe die selben Module für php7 installiert wie für php5.6.
Gruß
Steffen -
Hallo,
also entweder könnte das was mit den mysql-Treibern von PHP zu tun haben - mysqli bzw mysqlnd - oder mit dem Zugriff auf die DB über localhost bzw. 127.0.0.1, wo einmal wohl ein Socket verwendet wird bzw. eine TCP-Connection.
Wenn Du localhost verwenden solltest, dann versuche einfach mal 127.0.0.1.
Wir mussten seinerzeit mysqlnd nachinstallieren, damit das funktioniert, das war aber mit PHP 5.4. Ich kann auch nicht mehr wirklich sagen, ob das exakt dieser Fehler war.Vielleicht bringt Dich das auf die richtige Spur.
Bei uns steht demnächst auch die Umstellung auf PHP 7 an. Insofern verfolge ich das mit Interesse.
Ciao
Sven
-
Hallo Sven,
danke für deine Antwort. Ja habe bisher localhost genutzt, bin aber schon selbst auf die Idee gekommen das mal durch 127.0.0.1 zu ersetzen. Hat leider keine Besserung gebracht. Der Fehler bleibt der selbe
Hatte bevor ich meinen Post veröffentlicht hatte die Userrechte in MySQL geprüft. Die sind aber auch sauber. Die entsprechenden php-Module (mysqli und mysqlnd) sind laut phpinfo auch geladen. Entweder sehe ich den Wald vor Bäumen gerade nicht, oder es ist ein Bug in Idoit / php 7.0.19.
Gruß
Steffen -
Hallo,
die Problematik hatte ich selber auch schon, aber o richtig habe ich auch noch nicht verstanden, in welcher Konstellation das auftritt.
Hast Du auch in der idoit_system Datenbank in Tabelle isys_mandators die DB Einstellungen von localhost auf 127.0.0.1 geändert?
Der Eintrag in der config.inc.php bezieht sich ja nur auf den initialen Zugriff auf die Systemdatenbank, um die Mandantenliste etc. auszulesen. Danach benutzt er die mandantenspezifischen Datenbankuser und einstellungen, um darauf zuzugreifen.Alles in allem muss ich dem Problem mal genauer auf den Grund gehen. Es kann ja nicht sein, dass PHP7 "localhost" Als Socket nicht mehr unterstützt.
-
Hallo dkirsten,
nein den Eintrag hatte ich bisher nicht abgepasst. Nur den Eintrag in der config.inc.php.
Ich habe den DB-Eintrag jetzt angepasst und auf php7 umgestellt - und voila es geht Danke dir für den Tipp !!
Dann scheint es eindeutig am "localhost" zu liegen.
Gruß
Steffen -
Hallo,
wir haben das Problem näher analysiert: Wer auf "localhost" setzt, benutzt zwangsweise den Unix Socket von MySQL bzw. MariaDB. Wer auf "127.0.0.1" setzt, verwendet eine TCP/IP-Verbindung zu MySQL/MariaDB. Soweit so klar.
Auf einem frisch installierten Debian 9 RC4 Stretch ist aufgefallen, dass die PHP-Einstellung "mysqli.default_socket" nicht gesetzt ist. i-doit verlässt sich allerdings auf diese Einstellung. Falls sie nicht verhanden ist, versucht sie i-doit zu "erraten" – vergeblich. Daher kommt das Fehlerbild zustande.
Wir empfehlen aus Performance-Gründen, weiterhin auf den Unix Socket statt auf die TCP/IP-Verbindung zu setzen. Daher muss die PHP-Einstellung "mysqli.default_socket" gesetzt werden. Unter Debian 9 und Ubuntu 16.04 LTS ist es "/var/run/mysqld/mysqld.sock". Für andere Betriebssysteme haben wir das noch nicht überprüft.
Wir werden in den kommenden Tagen unsere FAQ und KB dementsprechend ergänzen.
Viele Grüße
Benjamin -
Hier ist der Eintrag in unserer FAQ:
https://help.i-doit.com/hc/de/articles/115003627245-Keine-Datenbankverbindung-nach-Upgrade-auf-PHP-7
tl;dr: Als Workaround bitte die PHP-Einstellung "mysqli.default_socket" setzen.
Viele Grüße
Benjamin