2013-04-15 1 views
0

EDIT - ERREUR ÉNORME MA PARTComment mon chemin de session PHP a-t-il changé?

J'ai trouvé un autre site qui avait la question que je savais était pas sur le même serveur. Puis j'ai réalisé que le site d'origine avec le problème était également sur un serveur différent et n'avait pas encore été déplacé complètement. Le serveur en question était en fait un serveur de Plesk Parallels et le problème a été causé par un correctif appliqué au serveur au cours du week-end en raison d'une mise à jour de sécurité. Ce serveur avait le chemin du fichier et je devais le chmod à 777 au lieu de 77x pour que ça fonctionne. Je m'excuse pour la confusion et remercie tout le monde pour avoir essayé d'aider. + pour tous. :)

Original Post

J'ai un site Web sur un serveur d'hébergement partagé (aussi le mien) que, depuis hier, a commencé à me donner cette erreur:

Warning: session_start() [function.session-start]: open(/var/lib/php/session/sess_678cf69f0f17b87c52136ee0280d23cc, O_RDWR) failed: Permission denied (13) in /var/www/vhosts/domain.net/httpdocs/index.php on line 1 

J'ai vérifié /usr/lib/php.ini et /usr/local/lib/php.ini pour voir où il est défini et les deux disent qu'il est défini sur le répertoire /tmp, où il doit être défini et a toujours été. Le répertoire /var/lib/php/session n'a jamais existé. Je l'ai créé et je lui ai donné 777 permissions, mais cela n'a pas aidé. Bien que le plus gros problème ici est pourquoi a-t-il changé pour commencer. Il n'y a pas de fichier .htaccess pour ce site et je ne peux pas le trouver ailleurs sur le site lui-même.

Ceci est le seul site sur ce serveur avec ce problème, me disant que c'est quelque chose de local sur le site. Je ne peux pas comprendre quoi. Donc ma question est la suivante: que dois-je rechercher pour vérifier les paramètres de chemin de sauvegarde de session pour un site individuel sur un environnement d'hébergement partagé pour savoir pourquoi il a soudainement changé pour ce client?

FYI, je cours un serveur de WHM.

Merci

+1

'grep -r/var/lib/php/session//' pourrait y répondre – hek2mgl

+1

@ hek2mgl Je laisse courir pour le moment. On dirait que ça va prendre un moment. Je vous le ferai savoir, et merci. – James

+0

@ hek2mgl Cela ne semble pas vouloir finir. Il continue 4 lignes puis expire. grep:/etc/httpd/logs/fpcgisock: Aucun appareil ou adresse grep: /etc/alternatives/tcl-libstub.x86_64: Aucun fichier ou répertoire grep: /etc/alternatives/tcl-config.x86_64 : Aucun fichier ou répertoire de ce type grep: /tmp/mysql.sock: Aucun périphérique ou adresse de ce type – James

Répondre

1

J'ai trouvé un autre site pour lequel le problème que je connaissais ne se trouvait pas sur le même serveur. Puis j'ai réalisé que le site d'origine avec le problème était également sur un serveur différent et n'avait pas encore été déplacé complètement. Le serveur en question était en fait un serveur de Plesk Parallels et le problème a été causé par un correctif appliqué au serveur au cours du week-end en raison d'une mise à jour de sécurité. Ce serveur avait le chemin du fichier et je devais le chmod à 777 au lieu de 77x pour que ça fonctionne. Je m'excuse pour la confusion et remercie tout le monde pour avoir essayé d'aider. + pour tous. :)

+0

Pourquoi pensez-vous que ce problème a été causé par la mise à jour de sécurité? –

+0

@OlegNeumyvakin C'est la seule chose qui a été récemment faite à ce serveur, et il a été mis à jour au moment où ce problème a été remarqué. – James

1

Vous ne semblez pas avoir l'autorisation d'écriture au serveur sur votre répertoire/var. C'est un peu bizarre, mais vous pouvez contourner ce problème. Avant l'appel à session_start(), appelez session_save_path() et donnez-lui le nom d'un répertoire accessible en écriture par le serveur. More details here

+0

Cela signifie-t-il que les sites sur mon serveur doivent avoir accès au répertoire var? Je ne suis pas sûr de savoir comment le chemin de sauvegarde a changé pour commencer, cependant. Il a toujours été le répertoire/tmp. – James

2
session_save_path(realpath(dirname($_SERVER['DOCUMENT_ROOT']) . '/../tmp')); 

Vous devez ajouter le code ci-dessus avant de commencer la session.

Questions connexes