web-dev-qa-db-fra.com

session_start (): le fichier de données de session n'est pas créé par votre uid

Je souhaite stocker les sessions créées dans un répertoire au-dessus de la racine, sauf lorsque j'utilise l'un des éléments suivants:

    session_save_path($_SERVER['DOCUMENT_ROOT'] . '/../storage/sessions');
    session_save_path($_SERVER['DOCUMENT_ROOT'] . '/../storage/sessions/'); // With an extra slash at the end
ini_set('session.save_path', $_SERVER['DOCUMENT_ROOT'] . '/../storage/sessions');
ini_set('session.save_path', $_SERVER['DOCUMENT_ROOT'] . '/../storage/sessions/'); // Again with the extra slash

et aucune de ces méthodes ne fonctionne, chaque fois que je charge la page, j'obtiens les erreurs suivantes:

Avertissement: session_start (): le fichier de données de session n’est pas créé par votre uid dans /var/www/bootstrap/bootstrap.php à la ligne 25

Avertissement: session_start (): Échec de lecture des données de session: fichiers (chemin: /Var/www/public/../storage/sessions/) dans /var/www/bootstrap/bootstrap.php à la ligne 25

Quelqu'un peut-il m'aider?

Edit: Mon serveur tourne sous PHP 7.1

5
Oreborous

PHP nécessite que le fichier de session appartienne à l'utilisateur qui exécute PHP.

Ensuite, exécutez simplement chown -R www-data:www-data /var/www/storage/sessions/ dans le dossier de session et les fichiers de votre utilisateur PHP (www-data:www-data sont votre utilisateur PHP et votre groupe séparés par :).

Vous pouvez utiliser la méthode PHP get_current_user() ou exécuter dans bash php -i | grep user et trouver votre utilisateur exécutant PHP à cet endroit.

6
zored

Édition config/config.yml et remplacement de chemin_sauvegarde: 

session:
    save_path: '/tmp'
3
Ashfaq Muhammad

J'utilise cela pour faire aussi Named Pipes en php. 

<?php
$user = get_current_user();   // get current process user

// We need to modify the permissions so users can write to it

exec( "chown -R {$user}:{$user} $fifoPath" );    
1
Tyler Miles

Je pourrais être que votre fichier de session a été créé par un autre utilisateur (bien UID), essayez de (ré) déplacer le (s) fichier (s) de session de votre répertoire temporaire à l’aide de/var/tmp

1
Recycled Steel

Sous Ubuntu sous Windows 10, mon utilisateur php est l'utilisateur par défaut que je crée pour la première installation, je ne sais pas pourquoi, car le etc/Apache2/envvars n'est pas configuré de la sorte.

Peu importe, je le change pour le réparer rapidement et maintenant, ça marche.

export Apache_RUN_USER=rudak
export Apache_RUN_GROUP=rudak
0
rudak

Ce qui a fonctionné pour moi pourrait également fonctionner pour vous.

Il semble que quelque chose s'est mal passé avec la session. Ouvrez les Outils de développement du navigateur et supprimez tous les Sessioncookies.

0
Florin

cela fonctionne pour moi:

Sudo chown -R www-data:www-data /var/lib/php/sessions 
0
elMatador

Autre solution: renommez votre dossier de session Var/session en var/session_old

créer un nouveau dossier var/session

et supprimez l'ancien.

0
Martijn van Hoof