Pb avec system dans php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Pb avec system dans php

Re: Pb avec system dans php

par jaladuvar » 04 déc. 2011, 15:42

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)

Re: Pb avec system dans php

par xTG » 04 déc. 2011, 14:21

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

par jaladuvar » 04 déc. 2011, 12:27

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

par xTG » 04 déc. 2011, 12:20

Problème de droit alors peut être ? L'utilisateur Apache n'a pas les droits sur cette fonction ?

Re: Pb avec system dans php 50%resolu

par jaladuvar » 04 déc. 2011, 10:32

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

par xTG » 04 déc. 2011, 09:45

Commences par regarder le retour de la fonction system() qui pose problème.

Pb avec system dans php

par jaladuvar » 04 déc. 2011, 00:45

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