Execution d'un programme externe et erreur 126

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 : Execution d'un programme externe et erreur 126

Re: Execution d'un programme externe et erreur 126

par usterin » 15 nov. 2015, 05:19

une connection FTP pour exécuter une commande sur l'hôte distant ?
si vous voulez exécutez une commande via telnet, il faudrait commencer par ouvrir une session telnet avec l'hôte distant et non une connection ftp…

Re: Execution d'un programme externe et erreur 126

par Dworkin » 30 oct. 2015, 13:04

J'ai ouvert le fichier error_log, et j'ai obtenu ces informations :

Code : Tout sélectionner

sh: /home/guillaume/public_html/a/a.out: Permission denied
En remontant dans le fichier de logs, j'ai vu que dans mes tests avec un chemin relatif, le problème était exactement le même.

Code : Tout sélectionner

sh: ./a.out: Permission denied
Pour moi permission denied est une erreur qui viens du système quand les droits ne sont pas les bons, mais a.out est bien en 777 et

Code : Tout sélectionner

sudo -u apache /home/guillaume/public_html/a/a.out
fonctionne bien (je viens de retester).
Qu'est ce qui pourrait interdire à Apache d'executer le programme à part cette question de droits d'execution sur le fichier?

Edit :
Je viens de vérifier dans httpd.conf, j'ai bien les lignes :

Code : Tout sélectionner

User apache Group apache

Re: Execution d'un programme externe et erreur 126

par @rthur » 30 oct. 2015, 12:48

Bonjour,

Le code d'erreur 126 = "Command was found but could not be executed / Permission problem or command is not an executable"
Essaye peut être de regarder dans les logs système de ton serveur pour en savoir +

Execution d'un programme externe et erreur 126

par Dworkin » 30 oct. 2015, 12:38

Bonjour à tous,
j'essaye de lancer un exécutable issue d'un code source écrit en C (un bête hello word pour ce test) depuis une page php.
Voila le code php :

Code : Tout sélectionner

<?php $cmd2="/home/guillaume/public_html/a/a.out"; <br>$cmd22="./a.out"; $cmd3="ls"; $return_var=0; $retour=system($cmd2, $return_var); ?> <head> </head> <body> <h1> <?php echo("commande : " . $cmd2 . "<br/>"); echo("retour prgm : ". $retour . "<br/>"); echo("valeur retour : " . $return_var ); ?> </h1> </body>
Lorsque je lance mon programme, la variable retour reste vide, et return_val prend la valeur 126.
Pourtant, si je tente de lancer la $cmd3 ("ls") à la place de $cmd2, "ls" est bien éxecuté.
J'ai pensé à une question de chemin relatif ou absolu, donc j'ai testé les deux, sans succès.
J'ai pensé à un problème de droits, donc j'ai fait un :

Code : Tout sélectionner

chmod 777 a.out
puis par aquis de conscience, j'ai lancé un :

Code : Tout sélectionner

sudo -u apache /home/guillaume/public_html/a/a.out
et j'ai bien eu le retour

Code : Tout sélectionner

hello word
Mais ma page php a toujours son code retour 126...
Donc le problème ne vient à priori pas des droits sur le fichier.
Je me suis demandé si il n'y avait pas un problème de configuration apache, mais je ne sait pas trop ou chercher.
Est ce que quelqu'un aurait une idée de l'endroit d'ou le problème pourrait venir?
Est ce qu'il y aurait une autre solution pour faire cet appel qui ne rencontrerait pas ce problème?
Je remercie par avance toute personne qui pourrait me donner une idée pour résoudre mon problème :-)