QRCodes funktionieren nicht nach Update
-
Hi,
ich habe heute ein Update von 1.6 auf 1.9 (schrittweise über 1.7 und 1.8 ) gemacht. Außerdem habe ich Debian von 7.4 auf 9 (schrittweise) und php von 5.4.4 auf 5.6 angehoben. Eventuell hat auch noch eine Umstellung auf mariadb stattgefunden, die ich aber gerade nicht prüfen kann, ob die gegriffen hat.
Nun funktioniert idoit wieder, nachdem ich den pfad von /var/WWW/i-doit auf /var/WWW/html/i-doit geändert habe - was einem ja auch erst mal gesagt werden muss.
Nachdem ich nun Dank https://forum.i-doit.org/index.php/topic,4959.0.html dieses Beitrags die Suche repariert habe funktioniert nun alles wieder … bis auf der QR-Code.
Der wird nun nicht mehr angezeigt.
Im IE finde ich keine Hinweise. Chrome meint aber:
Beim Aktivieren des Links erscheint der Fehler: Error loading QR Code
der Link wird korrekt generiert: http://meine-ip/i-doit/src/tools/php/qr/qr.php?url=http://meine-ip/i-doit/&objID=1193
die Bildaddresse http://meine-ip/i-doit/src/tools/php/qr/qr_img.php?&s=2&d=http%3A%2F%meine-ip%2Fi-doit%2F%3FobjID%3D1193
in Chrome eingefügt erzeugt:Fatal error: Call to undefined function ImageCreate() in /var/www/html/i-doit/src/tools/php/qr/qr_img.php on line 1147
Vorschläge, wie ich das Problem angehen kann?
Vielen Dank, vorab! -
Bei Debian Stretch ist anscheinend das Paket php5-gd nicht mehr vorhanden. Ich sehe drei Möglichkeiten:
1. Das Paket selber erstellen
2. Umstieg auf php7
3. Zurückgehen auf Debian Jessie -
Vielen Dank für die schnelle und präzise Antwort.
zu Punkt 1: Gibt es da irgendwo detaillierte Schritt-für-Schritt-Anleitungen dafür, in denen jeder benötigte Befehl genannt und am Besten erklärt ist? Ich habe keine Idee, wie ich das angehen sollte.
zu Punkt 2: würde ich testen, wenn Punkt 1 fehlschlägt. Habe aber Bedenken wegen Posts wie diesem: https://forum.i-doit.org/index.php?topic=5039.0.
zu Punkt 3: würde ich nur ungern machen. Ich weiß nicht ob mir ein Downgrade überhaupt sauber gelingen würde. Der Snapshot ist mittlerweile gelöscht und ich bin schon froh, dass ich das System auf Stretch bekommen habe…
... Linux ist nicht so meine Welt ... -
Ich sehe gerade, dass Debian Stretch eigentlich gar kein PHP5 mehr mitbringt. Selber kompilieren ist unter den Vorausetzungen sicher nichts für den Linux-Neuling.
Schauen wir doch erst mal, wo Sie wirklich stehen: Was sind denn die Ausgaben vonlsb_release -a || uname -a
php -v
mysqld –version
-
:~# lsb_release -a || uname -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 9.0 (stretch)
Release: 9.0
Codename: stretch
:~# php -v
PHP 5.6.30-0+deb8u1 (cli) (built: Feb 8 2017 09:49:20)
Copyright 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
:~# mysqld --version
2017-07-03 14:32:27 3070601216 [Note] Using unique option prefix 'key_buffer' is error-prone and can break in the future. Please use the full name 'key_buffer_size' instead.
mysqld Ver 10.1.23-MariaDB-9+deb9u1 for debian-linux-gnu on i686 (Debian 9.0)
:~#Danke vorab für die Mühe.
-
Sie haben also tatsächlich einen Zwitter aus Debian 8 und 9 auf der Platte. Das halte ich auf mittlere Sicht für eine schlechte Grundlage, da diese Kombination ziemlich einzigartig sein dürfte und auch nicht getestet werden wird. Mein Rat lautet deshalb: Gehen Sie auf PHP7.
-
Hallo,
ggf. würde ich einfach einen Umstieg auf eine neue Plattform umziehen, dann bist Du sicher, dass Du keine "verbastelete" Plattform hast. Im einfachsten Falle die virtuelle Appliance (gibt es bei uns im Eval Download Prozess auf der www.i-doit.com) als Basis nutzen. Die haben wir gerade auf Debian 9 geupdated und sollte als stabile Basis gut sein.
Die Datenbanken idoit_data und idoit_system können einfach per mysqldump exportiert und importiert werden.
-
@dkirsten hört sich auch toll an, werde ich definitiv in Erwägung ziehen, wenn das hier keinen Erfolg hat.
PHP habe ich nun auf php7 geupdatet:
:~# php -v PHP 7.0.20-1~dotdeb+8.2 (cli) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.0.20-1~dotdeb+8.2, Copyright (c) 1999-2017, by Zend Technologies :~# mysqld --version 2017-07-04 10:47:32 3070588928 [Note] Using unique option prefix 'key_buffer' is error-prone and can break in the future. Please use the full name 'key_buffer_size' instead. mysqld Ver 10.1.23-MariaDB-9+deb9u1 for debian-linux-gnu on i686 (Debian 9.0)
leider ist jetzt anstelle meiner i-doit-Anmeldemaske folgendes zu lesen:
" . $p_message . "\n"; die(); } // function if ((int) ini_get("memory_limit") < 128) { ini_set("memory_limit", "128M"); } // if if ((int) ini_get("upload_max_filesize") < 8) { ini_set("upload_max_filesize", "8M"); } // if // Check configuration parameters of php.ini // Allow FOPEN Wrapper for URLs. ini_set("allow_url_fopen", "1"); try { // Initialize framework. if (file_exists("src/config.inc.php") && include_once("src/config.inc.php")) { // Bootstrap. if (!include_once "src/bootstrap.inc.php") { startup_die("Could not find bootstrap.inc.php"); } // if // Include caching implementation. if (!include_once "src/caching.inc.php") { startup_die("Could not find caching.inc.php"); } // if global $g_dirs; // Temp cleanup. if (isset($_GET["IDOIT_DELETE_TEMPLATES_C"])) { $g_clear_temp = true; $l_directory = $g_dirs["smarty"] . "templates_c/"; } if (isset($_GET["IDOIT_DELETE_TEMP"])) { $g_clear_temp = true; $l_directory = $g_dirs["temp"]; } else { if (isset($_POST["IDOIT_DELETE_TEMP"])) { isys_glob_delete_recursive($g_dirs["temp"], $l_deleted, $l_undeleted); } } // if if ($g_clear_temp && isset($l_directory)) { echo "Deleting temporary files ... \n"; $l_deleted = 0; $l_undeleted = 0; isys_glob_delete_recursive($l_directory, $l_deleted, $l_undeleted, (ENVIRONMENT === 'development')); echo "Success: $l_deleted files - Failure: $l_undeleted files! \n"; unset($l_directory); if (isset($_GET["ajax"])) { die(); } // if } // if } else { if (!require_once "setup/install.inc.php") { startup_die("Could not start installer. Setup files not found."); } // if } // if } catch (Exception $e) { if (isset($_SERVER)) { isys_glob_display_error( stripslashes(nl2br($e->getMessage())) ); } else { printf($e->getMessage()); } die(); } // try try { // Process ajax requests. if (isset($_GET["ajax"])) { if (isys_application::instance()->session->is_logged_in()) { require_once("src/ajax.inc.php"); } } // if } catch (Exception $e) { if (isset($g_error) && $g_error) { isys_notify::error($g_error); } isys_notify::error($e->getMessage() . ' (' . $e->getFile() . ':' . $e->getLine() . ')'); die; } try { // Process api requests. if (isset($_GET['api'])) { try { switch ($_GET['api']) { case 'jsonrpc': include_once('src/jsonrpc.php'); break; } // switch } catch (Exception $e) { echo $e->getMessage(); } // try die; } // if // Main request handler. switch ($_GET["load"]) { /* case "test": if (isset($_GET['type'])) { $_GET['type'] = str_replace(chr(0), '', addslashes($_GET['type'])); if (file_exists("src/tests/i-doit/" . strtolower($_GET['type']) . ".php")) { global $g_comp_session; $g_comp_session->include_mandator_cache(); include_once("src/tests/i-doit/" . strtolower($_GET['type']) . ".php"); } } break; */ case "api_properties": include_once("src/tools/php/properties.inc.php"); break; case "property_infos": include_once("src/tools/php/property_infos.inc.php"); break; case "css": include_once("src/tools/css/css.php"); break; case "mod-css": include_once("src/tools/css/mod-css.php"); break; case "update": default: // The hypergate is the i-doit-internal entrypoint, in which all i-doit internal requests are running. include_once "src/hypergate.inc.php"; break; } // switch // Get PHP processing time. if (isset($g_config["show_proc_time"])) { if ($g_config["show_proc_time"] == true) { echo "\n"; } // if } // if } catch (SmartyException $e) { try { \idoit\View\ExceptionView::factory() ->setDi(isys_application::instance()->container) ->draw($e); } catch (Exception $e) { isys_glob_display_error($e->getMessage()); die(); } } catch (Exception $e) { isys_glob_display_error($e->getMessage()); die(); }
Beim Update habe ich mich an folgende Anleitung gehalten:
https://ansas-meyer.de/programmierung/php/php-7-unter-debian-jessie-installieren/leider ergeben sich beim abschließenden Test unendlich viele Fehler - hier der Anfang:
:~# cd /var/www/html/i-doit :/var/www/html/i-doit# find . -name "*.php" -exec php -l {} \; 1>/dev/null PHP Fatal error: Cannot redeclare random_int() in ./vendor/paragonie/random_compat/lib/random_int.php on line 191 PHP Fatal error: Cannot declare class ArithmeticError, because the name is already in use in ./vendor/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php on line 5 PHP Fatal error: Cannot declare class DivisionByZeroError, because the name is already in use in ./vendor/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php on line 5 PHP Fatal error: Cannot declare class ParseError, because the name is already in use in ./vendor/symfony/polyfill-php70/Resources/stubs/ParseError.php on line 5 PHP Fatal error: Cannot declare class AssertionError, because the name is already in use in ./vendor/symfony/polyfill-php70/Resources/stubs/AssertionError.php on line 5 PHP Fatal error: Cannot declare class TypeError, because the name is already in use in ./vendor/symfony/polyfill-php70/Resources/stubs/TypeError.php on line 5 PHP Fatal error: Cannot declare class Error, because the name is already in use in ./vendor/symfony/polyfill-php70/Resources/stubs/Error.php on line 5 PHP Parse error: syntax error, unexpected 'new' (T_NEW) in ./updates/versions/v1.4/files/src/classes/libraries/nusoap/nusoap.php on line 7381 PHP Parse error: syntax error, unexpected 'new' (T_NEW) in ./updates/versions/v1.5.2/files/src/classes/libraries/nusoap/nusoap.php on line 7381 PHP Fatal error: Cannot redeclare random_int() in ./updates/versions/v1.9.1/files/vendor/paragonie/random_compat/lib/random_int.php on line 191 PHP Fatal error: Cannot declare class ArithmeticError, because the name is already in use in ./updates/versions/v1.9.1/files/vendor/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php on line 5 PHP Fatal error: Cannot declare class DivisionByZeroError, because the name is already in use in ./updates/versions/v1.9.1/files/vendor/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php on line 5 PHP Fatal error: Cannot declare class ParseError, because the name is already in use in ./updates/versions/v1.9.1/files/vendor/symfony/polyfill-php70/Resources/stubs/ParseError.php on line 5 PHP Fatal error: Cannot declare class AssertionError, because the name is already in use in ./updates/versions/v1.9.1/files/vendor/symfony/polyfill-php70/Resources/stubs/AssertionError.php on line 5 PHP Fatal error: Cannot declare class TypeError, because the name is already in use in ./updates/versions/v1.9.1/files/vendor/symfony/polyfill-php70/Resources/stubs/TypeError.php on line 5 PHP Fatal error: Cannot declare class Error, because the name is already in use in ./updates/versions/v1.9.1/files/vendor/symfony/polyfill-php70/Resources/stubs/Error.php on line 5 PHP Fatal error: Cannot redeclare random_int() in ./updates/versions/v1.9/files/vendor/paragonie/random_compat/lib/random_int.php on line 191 PHP Fatal error: Cannot declare class ArithmeticError, because the name is already in use in ./updates/versions/v1.9/files/vendor/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php on line 5 PHP Fatal error: Cannot declare class DivisionByZeroError, because the name is already in use in ./updates/versions/v1.9/files/vendor/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php on line 5 PHP Fatal error: Cannot declare class ParseError, because the name is already in use in ./updates/versions/v1.9/files/vendor/symfony/polyfill-php70/Resources/stubs/ParseError.php on line 5 PHP Fatal error: Cannot declare class AssertionError, because the name is already in use in ./updates/versions/v1.9/files/vendor/symfony/polyfill-php70/Resources/stubs/AssertionError.php on line 5 PHP Fatal error: Cannot declare class TypeError, because the name is already in use in ./updates/versions/v1.9/files/vendor/symfony/polyfill-php70/Resources/stubs/TypeError.php on line 5 PHP Fatal error: Cannot declare class Error, because the name is already in use in ./updates/versions/v1.9/files/vendor/symfony/polyfill-php70/Resources/stubs/Error.php on line 5 PHP Parse error: syntax error, unexpected 'new' (T_NEW) in ./updates/versions/v1.5/files/src/classes/libraries/nusoap/nusoap.php on line 7381 PHP Parse error: syntax error, unexpected 'new' (T_NEW) in ./updates/versions/v1.6/files/src/classes/libraries/nusoap/nusoap.php on line 7381 PHP Fatal error: Redefinition of parameter $p_status in ./updates/versions/v1.8/files/src/classes/modules/cmdb/dao/category/global/isys_cmdb_dao_category_g_its_type.class.php on line 217 PHP Fatal error: Redefinition of parameter $deprecated in ./updates/versions/v1.8/files/src/classes/modules/report/dao/isys_report_dao.class.php on line 200
vielleicht gibt es ja eine einfach Lösung dafür - wie so oft. Zur Not habe ich einen Snapshot. Bin etwas ratlos, ob der vielen Fehler.
-
Das war nicht zielführend: Eine veraltete Anleitung zu nehmen, wo Sie bereits auf Debian Stretch geupdated haben.
Also zurückgehen auf den alten snapshot und:apt-get update
apt-get install php libapache2-mod-php php-bcmath php-cli php-common php-curl php-gd php-imagick php-json php-ldap php-mcrypt php-memcached php-mysql php-pgsql php-xml php-zip
Falls das fehlschlägt, vorher
apt-get remove php5
ausführen und noch einmal
apt-get install php libapache2-mod-php php-bcmath php-cli php-common php-curl php-gd php-imagick php-json php-ldap php-mcrypt php-memcached php-mysql php-pgsql php-xml php-zip
Die Fehler in den polyfills sind übrigens irrelevant.
-
Danke! Das hat sofort funktioniert.
:~# php -v PHP 7.0.19-1 (cli) (built: May 11 2017 14:04:47) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.0.19-1, Copyright (c) 1999-2017, by Zend Technologies
Allerdings hat i-doit von der Veränderung trotz reboot und Apache-restart nichts gemerkt. Dort wurde fröhlich weiter die 5.6 angezeigt und die QR-Codes blieben verschwunden.
Deshalb habe ich noch folgendes gemacht:a2dismod php5 a2enmod php7.0 service apache2 restart
nun erhalte ich beim Aufruf der Webseite folgenden Fehler:
Database error : php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution
Dieser sah dem bereits erwähnten Fehler aus https://forum.i-doit.org/index.php/topic,5039.0.html so sehr ähnlich, dass ich in der /etc/php/7.0/cli die php.ini angepasst habe und den Eintrag mysqli.default_socket = /var/run/mysqld/mysqld.sock gesetzt habe.
Das hat leider nicht geholfen. Wie mache ich nun weiter?
Edit meint:
Ich habe einen Ordner in /var/WWW/html parallel zu i-doit angelegt und test genannt. Darin eine index.php mitphpinfo(); ?>
angelegt. Diese Seite funktioniert.
Edit2 meint:
GENAIL!
Die phpinfo() meint, dassLoaded Configuration File: /etc/php/7.0/apache2/php.ini
die php.ini gar nicht im Ordner cli liegt. Deshalb habe ich die php.ini im apache2-Ordner genau so abgewandelt wie zuvor die andere. Nun funktioniert alles. PHP-Version in i-doit wird mit 7.0.19-1 angezeigt und die QR-Codes funktionieren wieder.
DANKE für die Unterstützung!
-
Schauen Sie doch mal, was unter "src/config.inc.php" in der "Database configuration" unter "host" eingetragen ist. Wenn der Eintrag problematisch erscheint, dann sollten Sie hier "localhost" eintragen und noch mal gucken, ob es funktioniert.
-
Hallo,
wir haben letzte Woche unsere Knowledge Base für PHP 7 und Debian 9 angepasst:
-
Debian GNU/Linux: Schritt für Schritt ein Debian 9 auf i-doit vorbereiten
-
Upgrade der i-doit Eval Appliance auf Debian GNU/Linux 9 "Stretch": Hier haben wir detailliert beschrieben, wie wir ein Debian von 8 auf 9 aktualisiert haben. Einige der oben genannten Fehler konnten so umgegangen werden.
Zum Datenbank-Fehler haben wir vor einiger Zeit einen FAQ-Artikel geschrieben: Wenn unter src/config.inc.php ein "localhost" als Hostname eingetragen ist, wird der Unix Socket von MySQL/MariaDB verwendet. Das ist auch gut so, weil performant. Nur leider kann PHP damit nicht viel anfangen, weswegen PHP angepasst und Apache neu gestartet werden muss.
Ich hoffe, das alles hilft schnell und einfach weiter
Viele Grüße
Benjamin -