Page 1 sur 1

Pb avec system dans php

Posté : 04 déc. 2011, 00:45
par jaladuvar
Voilà mon problème:
Si j'exécute dans le terminal shell de mon Mac la commande suivante voici ce que j'obtiens

Code : Tout sélectionner

MacJacques:~ jacques$ snmpget -v 1 -c public 192.168.1.62 .1.3.6.1.4.1.24681.1.2.12.0 SNMPv2-SMI::enterprises.24681.1.2.12.0 = STRING: "TS-119"
de même si j'exécute un ls -l j'ai la liste des éléments contenus dans le répertoire... normal
le script php suivant

Code : Tout sélectionner

<?php system('snmpget -v 1 -c public 192.168.1.62 .1.3.6.1.4.1.24681.1.2.12.0 > tmp.txt'); system('ls -l > tmp2.txt') ?>
me produit:
un fichier temp.txt vide
un fichier temp2.txt contenant bien le listing des fichiers du répertoire

ls comme snmpget sont tous deux dans /usr/bin/ , ajouter le port 161 à l'IP ne change rien

Pourquoi system('snmp etc.. ne fonctionne-t-il pas ?

Merci par avance car je "rame" depuis longtemps là-dessus et n'ai pas réussi à trouver une explication, ou mieux une solution

Re: Pb avec system dans php

Posté : 04 déc. 2011, 09:45
par xTG
Commences par regarder le retour de la fonction system() qui pose problème.

Re: Pb avec system dans php 50%resolu

Posté : 04 déc. 2011, 10:32
par jaladuvar
la commande suivante
system('snmpget -v 1 -c public 192.168.1.62:161 .1.3.6.1.4.1.24681.1.2.12.0',$retval);
donne comme $retval : 5
dans les erreurs snmpget: 5 est une catch-all error dont on ne parvient pas à déterminer la nature, et pourquoi survient-elle quand la commande est encapsulée dans system php et pas dans la commande terminal ?
Est-ce un problème de transcription de la chaîne de commande ? Je ne penes pas car en passant par escapeshellcmd j'ai le même retour
(Comme V2c est supporté j'ai essayé avec V2c qui est plus "riche" en codes d'erreurs mais toujours le même - et j'ai essayé sur un autre périphérique, même comportement)

Le problème ne se pose que sous MAMP, si je suis sur le serveur Apache de mon Mac, cela fonctionne.
Je vais poser la question dans les forums de MAMP

En tout cas merci de m'avoir aidé dans ma réflexion, on a toujours besoin d'un petit déclic :D

Re: Pb avec system dans php

Posté : 04 déc. 2011, 12:20
par xTG
Problème de droit alors peut être ? L'utilisateur Apache n'a pas les droits sur cette fonction ?

Re: Pb avec system dans php

Posté : 04 déc. 2011, 12:27
par jaladuvar
Je vais me plonger dans les deux phpinfo() et voir où ils diffèrent...mais je suis le même user dans les deux cas alors...

Re: Pb avec system dans php

Posté : 04 déc. 2011, 14:21
par xTG
Il me semble qu'il y a sous Unix une commande permettant d'afficher les droits sur un fichier non ?
Vu qu'une commande c'est un fichier, regardes qui a les droits sur cette commande.
Peut être que l'utilisateur Apache a les droits sur ls mais pas sur celle-ci.

Re: Pb avec system dans php

Posté : 04 déc. 2011, 15:42
par jaladuvar
en fait ls est dans /bin alors que snmpget est dans /usr/bin car par ailleurs les droits sont les suivants
-r-xr-xr-x 1 root wheel 80752 26 nov 19:10 /bin/ls
-rwxr-xr-x 1 root wheel 39968 26 nov 19:14 /usr/bin/snmpget

ce sont les mêmes, à part l'écriture non autorisée dans les droits utilisateur pour ls (ce qui est normal)
peut-être Apache sur MAMP n'accède t'il pas à usr...
Maintenant j'ai droit à un message (j'ai modifié quelques options de MAMP qui rendent Apache plus causant)