web-dev-qa-db-fra.com

Comment obtenir ma session pour écrire à Apache

J'ai récemment changé de serveur et maintenant ma page d'accueil ne fonctionnera plus. Il donne le texte suivant:

Warning: session_start() [function.session-start]: open(/var/lib/php/session/sess_eqbchncji8kj22f0iqa9g3v7u2, O_RDWR) failed: Permission denied (13) in /var/www/vhosts/alt.alternativedc.com/httpdocs/index.php on line 6

Warning: Unknown: open(/var/lib/php/session/sess_eqbchncji8kj22f0iqa9g3v7u2, O_RDWR) failed: Permission denied (13) in Unknown on line 0

Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0

J'ai supposé que cela signifiait que le dossier de session n'était pas accessible en écriture. J'ai donc exécuté la commande suivante après avoir ssh-ed sur le serveur:

chmod o+rw /var/lib/php/session

Cela n'a pas semblé résoudre le problème. Je ne sais pas quoi faire maintenant ...

13
BlackSheep

Essayez de changer votre chemin de sauvegarde de session dans votre fichier de configuration php,/tmp est un bon emplacement.

php.ini

session.save_path = /tmp

http://www.php.net/manual/en/session.configuration.php#ini.session.save-path

21
Eddie

Juste le même problème sur CentOS:

chown -R Apache:apache /var/lib/php/session

Faire de l'utilisateur http le propriétaire du répertoire de session devrait également fonctionner.

16
Martin Zeitler

Vous avez probablement modifié les autorisations d'un dossier parent de manière récursive, probablement de la part de votre propre utilisateur.
Allez dans votre dossier de sessions:
cd ~;cd /var/lib/php/ 

Si vous trouvez un dossier de sessions, Écrivez simplement ces deux commandes dans votre terminal:
cd ~; pour rentrer à la maison, puis
Sudo chown -R www-data:www-data /var/lib/php/session 

Ou, si votre dossier de sessions est "sessions" au lieu de "session":
cd ~; pour rentrer à la maison, puis
Sudo chown -R www-data:www-data /var/lib/php/sessions

De cette façon, votre serveur pourra écrire des sessions dans votre projet.
Je suis tout à fait sûr de cette approche.

6
daniel Warui

tmp et /var/lib/session doivent être chmod 1777 

et le problème résolu.

2
Muharrem

sur ubuntu 12.04/var/lib/php5 a 1733 permissions Je change dans php.ini session.save_path en/tmp pour stocker correctement les sessions . Sinon, vous pouvez définir le paramètre dans votre code par ini_set (' session.save_path ', path_where_Apache_have_permission_777);

0
Giacomo

J'ai essayé toutes les solutions ici mais elles n'ont pas fonctionné, car php.ini était écrasé par d'autres configurations.

Pour trouver le coupable que j'ai utilisé cette astuce :

grep -lR 'php_value' /etc/

Et là, c’est /etc/httpd/conf.d/php.conf qui a tout gâché. J'ai donc changé sa valeur de php_value session.save_path "/var/lib/php/session" à php_value session.save_path "/tmp".

Après avoir redémarré Apache (service httpd restart), cela a finalement fonctionné!

0
carla

Essayez de changer le propriétaire du répertoire de session en www-data . Pour ce faire, exécutez cette commande Sudo chown -R www-data /var/lib/php/sessions. Cela fonctionne pour moi.

0
Akshay jumbade