Execution script shell avec php [Résolu/Fermé]

Signaler
Messages postés
5
Date d'inscription
mardi 13 mars 2007
Statut
Membre
Dernière intervention
23 mai 2007
-
Messages postés
107
Date d'inscription
jeudi 27 septembre 2007
Statut
Membre
Dernière intervention
3 février 2020
-
Bonjour,

Je suis actuellement entrain d'essayer de lancer une commande Linux ,ls par exemple, à travers un script php.
J'utilise la commande exec de php. Comme je suis sous windows, j'utilise Cygwin. Je peux dans la ligne de commande lancer des commande comme ls ou pwd par contre dès que je veux les lancer dans mon script php rien ne se passe :
<?php
	$ligne = exec('pwd');
	echo $ligne;
?>


Alors que par exemple ceci fonctionne correctement :
<?php
	$ligne = exec('dir');
	echo $ligne;
?>


Est ce que quelqu'un aurait une idée?

Merci d'avance!

9 réponses

Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
116
Probablement parce que php via apache n'a pas accès au même PATH:

essaie
<?
$test=shell_exec('echo $PATH');
echo $test;
$ou_est_ls=shell_exec('which ls');
echo $ou_est_ls;
?>
5
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60769 internautes nous ont dit merci ce mois-ci

Messages postés
5
Date d'inscription
mardi 13 mars 2007
Statut
Membre
Dernière intervention
23 mai 2007
6
Salut,

Merci pour ta réponse, ca fonctionne. Je ne comprends pas trop pourquoi ca ne fonctionnait pas auparavant... Enfin merci de ton aide!
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 491
Salut,
#!/bin/bash
/etc/init.d/httpd start
tu donnes un nom pour ton script. Pour l'exécution regarde ici executer un script shell
Messages postés
107
Date d'inscription
jeudi 27 septembre 2007
Statut
Membre
Dernière intervention
3 février 2020
5
bonjour à tous ! j'esperes que le tres haut vous combles de ses bien faits!!

Je vous remercies pour la reponse à ma demande mais je suis un peu perdu je me demande ou je dois mettre le script pour qu'il soit exectuter par un autre script.
Je dois le mettre dans celui ci ou je dois le mettre dans un fichier particulier .
le script est bien celuici:
<?
#! /bin/bash
/etc/init.d/httpd start
?>

Merci d'avance pour votre future reponse
Que DIEU nous garde envie pour longtemps et dans la paix
Messages postés
277
Date d'inscription
lundi 20 novembre 2006
Statut
Membre
Dernière intervention
12 avril 2018
99
Salut,
Je ne connais pas Cygwin mais ca me semble logique que le pwd ne fonctionne pas alors que le dir fonctionne puisque c'est ton windows qui va interpréter la commande et qu'il ne connait pas la commande pwd alors qu'il connait le dir.
Mais chez moi sous linux les 2 fonctionne bien
Messages postés
5
Date d'inscription
mardi 13 mars 2007
Statut
Membre
Dernière intervention
23 mai 2007
6
Merci pour ta réponse rapide! :D

En fait non, cela n'est pas logique, car les executables de cygwin sont dans mon PATH, donc les commandes linux devraient fonctionner. Lorsque je tape la commande ls dans l'interpreteur elle fonctionne correctement, c'est la raison pour laquelle je ne comprends pas pourquoi cela ne fonctionne pas...
Messages postés
277
Date d'inscription
lundi 20 novembre 2006
Statut
Membre
Dernière intervention
12 avril 2018
99
Alors je comprends pas tres bien mais pour être honnete g appris la semaine passée qu'on pouvait exécuter des commandes en php avec le exec donc je pourrais pas t'aider des masses.
Messages postés
5
Date d'inscription
mardi 13 mars 2007
Statut
Membre
Dernière intervention
23 mai 2007
6
Cela ne donne rien dans l'affichage de la page...
Par contre ceci :
       $test=exec('echo $PATH',$tab,$i);
	echo $i;
	echo $test;
	$ou_est_ls=exec('which ls');
	echo $ou_est_ls; 


affiche 0 suivi de $PATH...
Je commence à me demander si cela est possible...
Messages postés
596
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
25 octobre 2012
116
essaie comme çà:

<?
$commande="which ls";
$result=shell_exec($commande);
echo $result;
?>

Bonjour, salut a vous
moi je suis sur linux fedora je ecrire un script pour qu'il execute la commande "/etc/init.d/httpd start" comment faire s'il vous plait
Merci d'avance
Messages postés
107
Date d'inscription
jeudi 27 septembre 2007
Statut
Membre
Dernière intervention
3 février 2020
5
s'il vous plait comment je peux faire pour voir la confirmation de l'execution du script sur un autre script