it-swarm.com.de

Symfony 3.1.5 Warnung: SessionHandler :: read (): Sitzungsdatendatei wird nicht von Ihrer UID erstellt

Ich führe Symfony 3.1.5 unter Ubuntu 14.04, PHP 7.1 und Apache 2.4.23 aus, die von Vagrant 1.8.6/VirtualBox 5.1.6 verwaltet werden. Ich versuche, einen einfachen Controller zu verwenden, den ich erstellt habe, um eine Antwort auf meinem Frontend zu rendern:

<?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\BrowserKit\Response;

class LandingController {
    /**
     * @Route("/", name="homepage")
     */
    public function showAction(){
        return new Response('This is the landing page!');
    }
}

Wenn ich versuche, über /app_dev.php auf mein Symfony-Frontend zuzugreifen, wird Folgendes angezeigt:

Warning: SessionHandler::read(): Session data file is not created by your uid 500 Internal Server Error - ContextErrorException

Mein Apache-Protokoll lautet:

CRITICAL - Uncaught PHP Exception Symfony\Component\Debug\Exception\ContextErrorException: "Warning: SessionHandler::read(): Session data file is not created by your uid" at /var/www/conan/var/cache/dev/classes.php line 366

Das Symfony-Entwicklerprotokoll lautet:

==> /var/www/conan/var/logs/dev.log <== [2016-10-11 14:23:04] request.INFO: Matched route "{route}". {"route":"homepage","route_parameters":{"_controller":"AppBundle\\Controller\\LandingController::showAction","_route":"homepage"},"request_uri":"http://conan.dev/app_dev.php/","method":"GET"} [] [2016-10-11 14:23:04] request.CRITICAL: Uncaught PHP Exception Symfony\Component\Debug\Exception\ContextErrorException: "Warning: SessionHandler::read(): Session data file is not created by your uid" at /var/www/conan/var/cache/dev/classes.php line 366 {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\ContextErrorException(code: 0): Warning: SessionHandler::read(): Session data file is not created by your uid at /var/www/conan/var/cache/dev/classes.php:366)"} []

Da dies ein sitzungsbezogenes Problem zu sein scheint, habe ich auf die Symfony-Dokumentation für Sitzungsverwaltung verwiesen. Es sagt aus:

Symfony-Sitzungen sind nicht mit der Direktive php.ini kompatibel. Session.auto_start = 1 Diese Direktive sollte in php.ini, in den Direktiven des Webservers oder in .htaccess deaktiviert werden.

session.auto_start = 0 in meinem php.ini und die Datei gehört dem Benutzer und der Gruppe root:

$ ls -lta /etc/php/7.1/fpm/php.ini -rw-r--r-- 1 root root 70584 Sep 30 07:29 /etc/php/7.1/fpm/php.ini

Ich habe versucht, einen .htaccess (den ich in meine DocumentRoot gestellt habe) gemäß den Anweisungen in der Symfony-Dokumentation zu erstellen, aber der Fehler bleibt bestehen.

Ich habe mehrere Themen und Fragen nach einer Lösung durchsucht, bin aber auf nichts gelandet. Irgendwelche Ideen, was das verursacht?

25
marcusnjones

Durch Bearbeiten von config/config.yml und Ersetzen von save_path: "%kernel.root_dir%/../var/sessions/%kernel.environment%" durch save_path: /var/lib/php/sessions wurde der Fehler behoben.

Wenn Sie einen Editor/eine IDE verwenden, die Leerzeichen automatisch in Tabulatoren konvertiert, deaktivieren Sie diese Funktion, bevor Sie die Änderungen speichern. Andernfalls kann der Fehler "enthält keine gültigen YAML" -Fehler auftreten. 

49
marcusnjones

Ich hatte das gleiche Problem. Das Problem, das für mich funktioniert hat, ist, var/sessions-Besitzer in www-data:www-data zu ändern (gleicher Benutzer/Gruppe für php-fpm-Subprozesse):

Sudo chown -R www-data:www-data var/sessions/
16
Takman

AVOID-Änderungsprogrammkonfiguration für Probleme, die nur in der Entwicklungsumgebung auftreten  

Hatte das gleiche Problem bei der Verwendung von Vagrant (PHP-FPM 7 + Nginx) mit einem Sync-Ordner (/ vagrant ~ default)

Gelöst, gerade gestellt 

    session:
        save_path: '/tmp'

aufconfig_dev.ymlinsideframeworkentry

Wählen Sie einfach einen Ort aus, an dem Webserver und PHP ohne Berechtigungsprobleme lesen/schreiben können.

15
Marcos Regis

Wenn Magento 2 diese Warnung generiert,

Nur delete existierte bereits in var/session Ordner und dessen Fixed .

7
Vinith

Ich hatte ein ähnliches Problem und löschte den Cache meines Browsers. Die gespeicherten Daten lösten das Problem. 

Auf Chrom und Oper sollte man folgendes tun:

Developer tools > Application > Clear Storage > Clear Site Data

In meinem Fall löste * das Entfernen von Browser-Cookies das Problem . Ich habe keinen der oben genannten Schritte ausgeführt und habe versucht, die Berechtigungen zu ändern. Ich habe Probleme mit Magento gehabt.

3

Ich verwende PIMCORE, das auf Symfony 3. .__ basiert. Um dieses Problem zu beheben, habe ich den Browser-Cache gelöscht.

Ich hoffe das wird helfen.

0
Faiyaz Alam

Der Sitzungspfad kann nicht geschrieben werden, da der Webbenutzer und der Besitzer des Inhalts im Sitzungsordner unterschiedlich sind und dies nicht tun.

Die Lösung besteht darin, Ihre/var- oder/var/sessions/-Eigentümer für den Webbenutzer festzulegen.

chown Apache: Apache/var/-R * Oder: chown www-data: www-data/var/-R *

Höchste Bewertung ist hier nicht wirklich die beste Antwort.

0
D Hersch

Wenn Sie NFS für den synchronisierten Ordner verwenden, sind die UID und GID aller darin enthaltenen Dateien die UID und GID des Benutzers Host, auf dem Vagrant ausgeführt wird, und stimmen möglicherweise nicht mit der UID und GID des Benutzers vagrant überein der Gast. Zum Beispiel habe ich:

-rw-r--r--  1  501 dialout 5.1K Oct 29 15:14 Vagrantfile

501 ist die UID meines Benutzers auf dem Mac, und auf dem Gast gibt es keinen entsprechenden Benutzer. dialout ist die Gruppe auf dem Gast, die der staff-Gruppe entspricht, die meine primäre Gruppe auf dem Mac ist.

Sie haben zwar die Berechtigung zum Lesen und Schreiben aller Dateien im synchronisierten Ordner, aber wenn PHP die UID des Besitzers der Sitzungsdatei überprüft, stimmt sie nicht mit dem Benutzer PHP überein, der ausgeführt wird, und blockiert die Zugang als Sicherheitsmaßnahme.

Sie können das vagrant-bindfs plugin verwenden, um dies zu umgehen:

vagrant-bindfs

Ein Vagrant-Plugin zum Automatisieren des Bindfs-Mount in der VM. Auf diese Weise können Sie Besitzer, Gruppe und Berechtigungen für Dateien ändern und beispielsweise NFS-Freigabeberechtigungsprobleme umgehen.

Folgendes hat für mich funktioniert:

  • vagrant plugin install vagrant-bindfs ausführen
  • In deiner Vagrantfile:

    config.vm.synced_folder '.', '/vagrant', disabled: true
    config.vm.synced_folder '.', '/vagrant-nfs', type: 'nfs'
    
    config.bindfs.bind_folder '/vagrant-nfs', '/vagrant'
    
  • vagrant reload ausführen

Und es funktioniert:

-rw-r--r--  1 vagrant vagrant 5.1K Oct 29 15:45 Vagrantfile