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
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.
Édition config/config.yml et remplacement de chemin_sauvegarde:
session:
save_path: '/tmp'
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" );
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
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
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.
cela fonctionne pour moi:
Sudo chown -R www-data:www-data /var/lib/php/sessions
Autre solution: renommez votre dossier de session Var/session en var/session_old
créer un nouveau dossier var/session
et supprimez l'ancien.