Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Opcache Problem (redeclare Fehler)

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP Opcache Problem (redeclare Fehler)

    Hallo zusammen,

    ich habe ein recht diffuses Problem mit PHP (5.6 - 7.1.6) bei eingeschalteten Opcache in Verbindung mit dem IIS 8.5 und Windows Server 2012 R2.
    Das Problem stellt sich wie folgt dar:

    Ruft man eine PHP-Seite auf, kann es sein, dass der Aufruf der Seite 5-10x problemlos funktioniert, anschließend erscheint nur noch eine weiße Seite.
    Im Logfile findet man dann Warnungen/Fehler wie

    [07-Dec-2017 09:57:11 Europe/Berlin] PHP Fatal error: Cannot redeclare composerRequiree744d24db906654e872801355481e07f() (previously declared in D:\inetpub\wwwroot\itdoc\extensions\BlueSpiceFound ation\vendor\composer\autoload_real.php:63) in D:\Inetpub\wwwroot\itdoc\extensions\BlueSpiceFound ation\vendor\composer\autoload_real.php on line 63
    oder
    [11-Dec-2017 09:35:23 Europe/Berlin] PHP Warning: preg_match_all(): Compilation failed: two named subpatterns have the same name at offset 1312

    Die redeclare Fehler lassen sich mit if(!class_exists("Database_Zend",false)) {... beheben, aber da sich die sporadisch auftretenden Fehler über so ziemlich alle Eigenentwicklungen und fertigen Module ziehen, ist das nicht praktikabel. Programmierfehler sind auszuschließen, da die Fehler meist nur sporadisch und unter Last auftreten. Mit ausgeschaltetem Opcache treten die Fehler nicht auf.

    Interessanterweise sind die Fehler unter Windows Server 2008 mit eingeschalteten Opcache nicht aufgetreten. Erst mit der Server Version 2012 sind sie aufgetreten. Irgendetwas geht im Zusammenspiel mit PHP + Opcache+ Windows Server 2012 + IIS gewaltig schief. Die PHP-Version schein zweitrangig zu sein. Ich habe es mit PHP 5.6 und 7.1.6 mit gleichem Ergebnis versucht.

    Kennt jemand dieses Problem und hat ggf. einen Lösungsansatz parat?


  • #2
    Deaktiviere den Opcache.

    Kommentar


    • #3
      Zitat von Blar Beitrag anzeigen
      Deaktiviere den Opcache.
      Den Lösungsansatz habe ich derzeit zwangsläufig auch gewählt, aber da der Cache die Performance durchaus deutlich steigert, hätte ich ihn schon gerne genutzt

      Kommentar


      • #4
        Wie verhält es sich mit php 7.2 ?

        Kommentar


        • #5
          Zitat von Sunshadow Beitrag anzeigen
          Den Lösungsansatz habe ich derzeit zwangsläufig auch gewählt, aber da der Cache die Performance durchaus deutlich steigert, hätte ich ihn schon gerne genutzt
          Funktioniert das ganze ohne Opcache wie gewollt? Ein solches Problem konnte ich nur mal vor einigen Jahren mit PHP 5.2 und PHP 5.3 mit APC beobachten. In neueren Versionen sollte das ganze nicht mehr passieren. Vielleicht Opcache und APC aktiviert?

          Kommentar


          • #6
            Zitat von Blar Beitrag anzeigen

            Funktioniert das ganze ohne Opcache wie gewollt? Ein solches Problem konnte ich nur mal vor einigen Jahren mit PHP 5.2 und PHP 5.3 mit APC beobachten. In neueren Versionen sollte das ganze nicht mehr passieren. Vielleicht Opcache und APC aktiviert?
            Ja, ohne Opcache funktioniert alles einwandfrei. Das APC Modul habe ich nicht installiert. Es ist wirklich nur der Opcache, der die Probleme macht. Man kann es ja nicht mal auf eine PHP-Version schieben.
            Es scheint irgendeine Konstellation mit Windows-Server, IIS und PHP + Opcache zu sein. Witzigerweise gab es früher mit Windows Server 2003 die gleichen Probleme. Mit Server 2008 waren sie weg und mit 2012 wieder da.

            Kommentar


            • #7
              Wir haben die gleiche Konfiguration auf unseren Servern. Läuft ohne Probleme. Evtl. hast Du Erweiterungen am Laufen die da irgendwie dazwischen funken. Welche Erweiterungen werden denn genutzt?

              Im Notfall würde ich mal alle zum testen nicht benötigten Erweiterungen abdrehen und mal schauen ob das Besserung bringt. Unter Unixoiden gibts unter bestimmten Bedingungen einen Bug mit opcache wenn es mit --debug-enable kompiliert wurde. Möglicher Weise auch unter Wndows.

              Kommentar


              • #8
                An Extensions ist nichts spezielles dabei:
                extension=php_bz2.dll
                extension=php_exif.dll
                extension=php_gd2.dll
                extension=php_gettext.dll
                extension=php_imap.dll
                extension=php_ldap.dll
                extension=php_mbstring.dll
                extension=php_mysqli.dll
                extension=php_pdo_mysql.dll
                extension=php_pdo_pgsql.dll
                extension=php_pgsql.dll
                extension=php_soap.dll
                extension=php_sockets.dll
                extension=php_tidy.dll
                extension=php_xsl.dll
                extension=php_intl.dll
                extension=php_fileinfo.dll
                extension=php_pdo_odbc.dll
                extension=php_pdflib.dll
                extension=php_curl.dll
                extension=php_openssl.dll
                extension=php_pdo_sqlsrv.dll
                extension=php_sqlsrv.dll
                zend_extension=php_opcache.dll


                Es haben sich "nur" der Windows-Server + IIS geändert. Keine PHP-Konfiguration.

                Kommentar

                Lädt...
                X