validité code

Petit nouveau ! | 3 Messages

06 févr. 2013, 16:54

bonjour

je cherche à faire exécuté un scripte shell via se programme malheureusement il refuse de l’être.

il doit normalement être appeler par un autre code mais celui-ci fait bien sont travaille donc pas de problème de ce coté

<?php /* Created on: 06/02/2013 */ ?>
<html>
<body>
<?php
$varia=exec(/data/..../action.txt Var1 Var2 Var3)
echo $varia;
?>
</body>
</html>

merci de votre aide

ViPHP
xTG
ViPHP | 7331 Messages

06 févr. 2013, 17:38

Montres nous le code exact que tu exécutes déjà...
Car là je pourrai t'envoyer relire un cours sur les fonctions PHP et leurs paramètres. ;)

Petit nouveau ! | 3 Messages

06 févr. 2013, 17:40

voila je part d'ici

<html>
<!-- Created on: 06/02/2013 -->
<head>
</head>
<body>

<FORM method="get" onsubmit="php.php" onreset="handler"> <!--def des commande bouton -->
<INPUT TYPE="text" NAME="Var1" SIZE=30 MAXLENGTH=40 VALUE="donnée1"> <!-- etablissement des fenetres de capture-->
<br/><INPUT TYPE="text" NAME="Var2" SIZE=30 MAXLENGTH=40 VALUE="donnée2">
<br/><INPUT TYPE="text" NAME="Var3" SIZE=30 MAXLENGTH=40 VALUE="donnée3">
<br/><INPUT TYPE="submit" name="nom" value="Envoyer"> <!-- bouton-->
<INPUT TYPE="reset" VALUE="Recommencer">
</form>

</body>
</html>

pour ensuite prendre :
<?php /* Created on: 06/02/2013 */ ?>
<html>
<body>
<?php
$tab = array(2,5,6);
$varia=exec(action.txt,$tab);
echo $varia;
?>
</body>
</html>

Mammouth du PHP | 571 Messages

06 févr. 2013, 18:15

 $varia=exec(action.txt,$tab);//passthru() est mieux adapté pour raison de sécurité 
action.txt n'est pas un script shell s'il en est un, il doit porter l'extension .sh (action.sh).Ensuite la variable $tab est un tableau qui affiche le résultat de la commande shell donc tu ne peux pas afficher un tableau avec echo essaies de faire print_r($tab) à la place echo pour voir quel resultat est retourné/

Petit nouveau ! | 3 Messages

06 févr. 2013, 18:28

merci je change déjà sa et continu

ViPHP
xTG
ViPHP | 7331 Messages

06 févr. 2013, 18:34

De plus du coup je te renverrai bien vers un cours sur les fonctions et les variables...
$varia=exec(action.txt,$tab); // tu concatènes la constante action avec la constante txt
$varia=exec('action.txt',$tab); // correct
Pour ton script shell il faut aussi qu'il possède des droits d'exécutions (+x).

Eléphant du PHP | 353 Messages

06 févr. 2013, 21:55

 $varia=exec(action.txt,$tab);//passthru() est mieux adapté pour raison de sécurité 
La fonction passthru() n'offre pas plus de sécurité. Que l'on utilise pssthru() ou exec() ou system() d'ailleurs, il faut vérifier si besoin les arguments passés à la fonction.

action.txt n'est pas un script shell s'il en est un, il doit porter l'extension .sh (action.sh).
Absolument pas.
Il faut que le fichier contiennent le shebang (#!) suivi du chemin complet vers un shell (sh, bash, ...) Et deuxièment pour que le script puisse être exécuté, il faut que l'utilisateur faisant tourner apache (ou php si c'est en ligne de commande) est le droit d'exécution sur ce script.