Page 1 sur 1

php double face

Posté : 17 juin 2015, 17:01
par Bakaarion
Bonjour, bonsoir,

J'ai une petite machine debian (Wheezy) sur laquelle je fais tourner quelques petits scripts php en mode boucle infinie, visant à tester et chiffrer le bon fonctionnement de la machine (ping, ralentissments, etc ...). J'ai testé plusieurs machines debian et je n'ai jamais eu de problèmes, jusqu'à maintenant :

Pour savoir si un script est en route, je vérifie si le PID existe sur la machine (préalablement stocké en base de données) de cette façon.

Code : Tout sélectionner

if(file_exists("/proc/$pid")) // :D else // :(
Seulement voilà, sur cette machine j'ai un false alors que le fichier est bel et bien là. Je précise que j'ai le bon pid retourné par la bdd, et de toute façon j'ai déjà testé en dur.
Le plus marrant, c'est que quand j’exécute avec SSH, il me retourne un true, le petit saligaud :shock: !! Ah, il est tout de suite plus docile quand on le prend par la commande.

Malgré mes quelques recherches gougle je n'ai rien trouvé, peut être une piste à propos du safe mode de php, mais j'ai essayé avec safe_mode = Off dans le php.ini, eh ben... toujours pas. Même si je reboot toute la machine après le moindre changement (je relance les scripts aussi bien sur). j'ai même mis les fameux droits 777 sur "/proc", c'est dire si je suis désespéré.
Petite note : quand je redémarre apache2, le programme fonctionne toujours, comment cela est-il possible ? le processus est mis en pause ?

Voilà, si quelqu'un à une solution, une idée ou même une piste, j'en serais ravis. En attendant, merci d'avoir accordé un peu de temps à la lecture de cet énoncé^^.

Re: php double face

Posté : 17 juin 2015, 17:42
par Saian
Salut, à priori je penche pour un problème de droits. Tu peux avoir les bons droits sur le dossier sans avoir les bons droits sur le fichier.
Il faut que l'utilisateur du serveur web ait les droits de lecture sur le fichier.

Re: php double face

Posté : 17 juin 2015, 20:46
par Bakaarion
Merci d'avoir répondu.
J'ai essayé de mettre les droits sur le processus, mais ce n'est pas géré par le chmod, alors je ne suis pas allé plus loin. Je vais donc faire des recherches dans ce sens, merci !
Si je trouve une solution je la posterais ici au cas où quelqu'un d'autre tomberai sur le même problème.

Re: php double face

Posté : 21 août 2015, 18:27
par Bakaarion
Bonjour, j'avais dit que si j'avais une solution viable je la posterais ici.
Donc c'est bien un problème de droits, mais les fichiers dans /proc/ sont un peu spéciaux, pas possible d'utiliser un chmod, même en root.

En fait je lançait mes scripts en root, et les PID répertoriés dans /proc étaient complètement invisibles pour l'utilisateur ww-data (le serveur web). En les lançant avec n'importe quel autre utilisateur, je peu les voir, et tout marche bien.

Il y a probablement un moyen pour rendre ces PID visibles même lancés en root (ce qui d'ailleurs marchait très bien sur une autre machine), via un option peut être, mais je n'ai rien trouvé de concret dans ce cas là.
D'ailleurs je rappelle que root ne doit normalement pas être utilisé (ou le moins possible), sachant que c'est dieu tout puissant sur la machine, le mieux est d'utiliser un autre utilisateur dans un groupe administrateur spécifique.
Cette solution me convient donc.

Merci !