• Hallo zusammen,


    seit dem letzten Update der Opt-PHP-Pakete lässt sich der Contao-Manager nicht mehr starten. Egal welche PHP-Version ich auch auswähle, die Phar-Datei bleibt hängen.


    Es gibt leider auch keine Fehlermeldung.


    Wie komme ich an die letzte Version der deb-Pakete?


    Klaus Rörig

  • Welche Version genau wäre denn die "letzte Version"? Die unmittelbar vorherige?
    Ich habe das eben mal mit dem aktuellen Contao Manager unter Debian 9 mit PHP 7.2.11, 7.1.23 und 7.0.32 getestet, funktioniert problemlos.
    Haben Sie die php.ini-Einstellung "log_errors" mal aktiviert? Dann sollten PHP-Ausführungsfehler in ~/logs/priv/php_errors.log protokolliert werden.


    Viele Grüße


    -Klaus Keppler

  • Hallo Keppler,


    ja, dann erhalte ich folgende Meldung im Log:


    Code
    [25-Oct-2018 17:39:43 Europe/Berlin] PHP Fatal error: Phar::webPhar(): Failed opening required 'phar:///var/www/web0/html/www.bergischer24stundenlauf.de/contao4/web/contao-manager.phar.php/web/api.php' (include_path='.:/opt/php-7.2/lib/php') in /var/www/web0/html/www.bergischer24stundenlauf.de/contao4/web/contao-manager.phar.php on line 99


    Auslöser war diese Meldung:

    Code
    ERROR 500 The Contao version could not be determined
    The console returned unexpected content when asked for the Contao version. Please check the output for more information: PHP Warning: Failed loading Zend extension 'opcache.so' (tried: /opt/php-7.2/lib/extensions/no-debug-non-zts-20170718/opcache.so (/opt/php-7.2/lib/extensions/no-debug-non-zts-20170718/opcache.so: undefined symbol: pcre_free), /opt/php-7.2/lib/extensions/no-debug-non-zts-20170718/opcache.so.so (/opt/php-7.2/lib/extensions/no-debug-non-zts-20170718/opcache.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 4.4.17


    Daraufhin habe ich 'apt upgrade' gemacht, das hat mir die neuen PHP-Paket gebracht und danach lief dann nichts mehr.

  • PHP Warning: Failed loading Zend extension 'opcache.so' (tried: /opt/php-7.2/lib/extensions/no-debug-non-zts-20170718/opcache.so (/opt/php-7.2/lib/extensions/no-debug-non-zts-20170718/opcache.so: undefined symbol: pcre_free), [...]


    Das hilft schon mal weiter - das Problem liegt offenbar darin, dass die opcache-Erweiterung nicht geladen werden kann.
    Welche Distribution genau nutzen Sie?
    Sie könnten testweise mal die Datei /opt/php-7.2/etc/conf.d/opcache.ini bearbeiten und dort die zend_extension-Anweisung auskommentieren, dann sollte es vorerst wieder laufen.

  • Vor dem Auskommentieren:

    Code
    PHP 7.2.11 (cli) (built: Oct 15 2018 08:02:30) ( NTS )
    Copyright (c) 1997-2018 The PHP Group
    Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
        with Zend OPcache v7.2.11, Copyright (c) 1999-2018, by Zend Technologies


    Nach dem Auskommentieren:


    Code
    PHP 7.2.11 (cli) (built: Oct 15 2018 08:02:30) ( NTS )
    Copyright (c) 1997-2018 The PHP Group
    Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies


    Und ohne läuft auch der Contao-Manager wieder.


    Das Problem habe ich bei allen 3 über die Opt-Pakete installierten PHP-Versionen.


    Distri ist: Ubuntu 16.04.5 LTS

  • Hmm, auf unserer Ubuntu-16-Testmaschine läuft alles problemlos, auch mit Opcache.
    Da die Fehlermeldung auf ein Problem mit PCRE hindeutet, was liefern die folgenden Befehle?

    Code
    ldd /opt/php-7.2/lib/extensions/no-debug-non-zts-20170718/opcache.so
    ldd /opt/php-7.2/bin/php | grep pcre
    dpkg -l | grep pcre
  • Code
    root@liveconfig01 ~ # ldd /opt/php-7.2/lib/extensions/no-debug-non-zts-20170718/opcache.so
            linux-vdso.so.1 =>  (0x00007fffd2deb000)
            libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7ea8970000)
            /lib64/ld-linux-x86-64.so.2 (0x00007f7ea8fae000)
    root@liveconfig01 ~ # ldd /opt/php-7.2/bin/php | grep pcre
            libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fcf61409000)
    root@liveconfig01 ~ # dpkg -l | grep pcre
    ii  libpcre3:amd64                      2:8.41-1.2+ubuntu16.04.1+deb.sury.org+1 amd64        Perl 5 Compatible Regular Expression Library - runtime files
  • ii libpcre3:amd64 2:8.41-1.2+ubuntu16.04.1+deb.sury.org+1


    Da haben wir die Ursache schon... Sie haben offenbar die bei Ubuntu mitgelieferte libpcre durch die Version von deb.sury.org ersetzt. Offenbar ist diese aber inkompatibel zur 8.38, daher kracht's bei PHP.
    Einzige Frage wäre daher: wenn Sie ohnehin schon PCRE von deb.sury.org verwenden, warum dann nicht auch gleich die PHP-Pakete von dort?

  • das ist dann noch eine Leiche.
    dann werde ich die wohl mal verschwinden lassen müssen.


    Ich hatte mal eine 7.1 von dort installiert, bevor ich die OPT-Pakete kannte.


    Jetzt muss ich nur mal schauen, wie ich noch weitere Leichen finde...

  • Keine Fehlermeldung - keine Hilfe möglich...


    Wie gehabt:


    Code
    [29-Oct-2018 17:57:53 Europe/Berlin] PHP Fatal error:  Phar::webPhar(): Failed opening required 'phar:///var/www/web0/html/www.bergischer24stundenlauf.de/contao4/web/contao-manager.phar.php/web/api.php' (include_path='.:/opt/php-7.2/lib/php') in /var/www/web0/html/www.bergischer24stundenlauf.de/contao4/web/contao-manager.phar.php on line 99


    Mehr kommt da nicht.

  • hier nochmal die Commandoutputs:


  • Weil ich gerade sehe dass die Antwort hier noch fehlt: es gibt offenbar einen Bug im PHP Opcache, wenn man auf Phar-Archive zugreift und Opcache die Daten im Shared Memory cached.


    Der Fehler lässt sich umgehen, indem man die php.ini-Einstellung "opcache.file_cache_only" von "no" auf "yes" setzt. Damit wird der compilierte Bytecode im jeweiligen Cache-Verzeichnis als Datei abgelegt, und nicht mehr im Shared Memory. Im Zeitalter von SSDs hält sich der "Impact" dabei auch in Grenzen.


    Weitere Infos auch im GitHub-Ticket des Contao Managers: https://github.com/contao/cont…47#issuecomment-434752134


    Ab LiveConfig v2.7.1 ist die Einstellung "opcache.file_cache_only" in der php.ini-Verwaltung enthalten und kann durch Kunden von "no" (Standard-Einstellung von PHP) auf "yes" geändert werden.


    Viele Grüße


    -Klaus Keppler

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!