Community
    • Categories
    • Recent
    • Popular
    • Users
    • Search
    • Register
    • Login

    QRCodes funktionieren nicht nach Update

    Scheduled Pinned Locked Moved Entwicklung
    12 Posts 4 Posters 1.5k Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • B Offline
      beneblack
      last edited by

      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!

      1 Reply Last reply Reply Quote 0
      • F Offline
        franknagel
        last edited by

        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

        1 Reply Last reply Reply Quote 0
        • B Offline
          beneblack
          last edited by

          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 ...

          1 Reply Last reply Reply Quote 0
          • F Offline
            franknagel
            last edited by

            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 von

            lsb_release -a || uname -a

            php -v

            mysqld –version

            1 Reply Last reply Reply Quote 0
            • B Offline
              beneblack
              last edited by

              :~# 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.

              1 Reply Last reply Reply Quote 0
              • F Offline
                franknagel
                last edited by

                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.

                1 Reply Last reply Reply Quote 0
                • dkirstenD Offline
                  dkirsten administrators
                  last edited by

                  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.

                  Viele Grüße,

                  Daniel

                  1 Reply Last reply Reply Quote 0
                  • B Offline
                    beneblack
                    last edited by

                    @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.

                    1 Reply Last reply Reply Quote 0
                    • F Offline
                      franknagel
                      last edited by

                      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.

                      1 Reply Last reply Reply Quote 0
                      • B Offline
                        beneblack
                        last edited by

                        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 mit

                        
                           phpinfo();
                        ?>
                        
                        

                        angelegt. Diese Seite funktioniert.

                        Edit2 meint:
                        GENAIL!
                        Die phpinfo() meint, dass

                        Loaded 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!

                        1 Reply Last reply Reply Quote 0
                        • F Offline
                          franknagel
                          last edited by

                          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.

                          1 Reply Last reply Reply Quote 0
                          • bheisigB Offline
                            bheisig i-doit Team
                            last edited by

                            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

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post