Ich habe ein CMS namens Prestashop installiert: Es läuft unter einer bestimmten Domäne und mit einer bestimmten VirtualHost-Konfiguration auf Apache, auf einem Server mit anderen PHP-Anwendungen (Wordpress).
Wenn ich versuche, mich als Administrator anzumelden, erhalte ich die folgende Fehlermeldung (dies ist das Apache-Fehlerprotokoll):
[Wed Jan 18 00:09:16.059190 2017] [:error] [pid 31253] [client xx.xx.xx.xx:63129] PHP Fatal error: Uncaught exception 'RuntimeException' with message 'Failed to start the session: already started by PHP.' in /opt/wp/apps/prestashop/app/cache/prod/classes.php:108\nStack trace:\n#0 /opt/wp/apps/prestashop/app/cache/prod/classes.php(483): Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage->start()\n#1 /opt/wp/apps/prestashop/vendor/symfony/symfony/src/Symfony/Component/Security/Csrf/TokenStorage/SessionTokenStorage.php(90): Symfony\Component\HttpFoundation\Session\Session->start()\n#2 /opt/wp/apps/prestashop/vendor/symfony/symfony/src/Symfony/Component/Security/Csrf/CsrfTokenManager.php(54): Symfony\Component\Security\Csrf\TokenStorage\SessionTokenStorage->hasToken('ANONYMOUS_USER')\n#3 /opt/wp/apps/prestashop/app/cache/prod/classes.php(8196): Symfony\Component\Security\Csrf\CsrfTokenManager->getToken('ANONYMOUS_USER')\n#4 /opt/wp/apps/prestashop/classes/Link.php(722): PrestaShopBundle\Service\Routing\Router->generate('admin_product_c...')\n#5 /opt/wordpre in /opt/wp/apps/prestashop/app/bootstrap.php.cache on line 3216, referer: http://www.xxxxx.xx/adminXXX/index.php?controller=AdminLogin&token=181fa270d47386a8d523bdea6213932c&redirect=AdminDashboard'
Der Fehler wird von einer stabilen Version von Prestashop abgerufen, daher glaube ich nicht, dass er an einem Codeproblem liegen kann. Ist es so, dass WordPress zuerst eine Sitzung öffnet und Symfony (Prestashop) dann feststellt, dass die Sitzung bereits geöffnet ist? Die Hauptdomäne wird tatsächlich von WP bereitgestellt. Ich versuche auch, einen bestimmten Pfad für den Prestashop VirtualHost zu definieren:https://stackoverflow.com/questions/18262878/how-to-prevent-php-sessions-being-shared-between-different-apache-vhosts Leider funktioniert es nicht.
Der PHP-Sitzungs-Autostart-Parameter ist in php.ini auf 0 gesetzt.
Ich verstehe nicht, wie ich dieses Problem lösen kann. Kann es an einer Apache- oder PHP-Konfiguration liegen?
Vielen Dank.
Antwort1
Sie haben einige Zeichen außerhalb Ihres PHP, vor dem Befehl session_start. Höchstwahrscheinlich Leerzeichen nach dem schließenden Tag ?>
Aus diesem Grund sollten schließende Tags nicht am Ende der Datei stehen; dies wurde im PSR2-Standard kodifiziert.
Stellen Sie sicher, dass Sie alle Dateien mit den richtigen FTP-Einstellungen hochladen, und prüfen Sie, ob versehentliche Änderungen vorgenommen wurden. Im schlimmsten Fall fügen Sie var_dump(headers_sent().__FILE_d); in alle Dateien ein, die vor Ihrer Fehlermeldung enthalten sind.