Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2655 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Utiliser exec() en php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Utiliser exec() en php

n°1292306
sylsau
Posté le 25-01-2006 à 22:47:17  profilanswer
 

Bonjour,
 
Je tente de faire un petit script en php qui me permettrait sur mon serveur d'exécuter un programme C qui se trouve sur le serveur et d'en récupérer le résultat.
 
J'ai regardé dans la documentation de PHP, et j'ai trouvé les fonctions de la famille exec().
 
La fonction shell_exec() me paraissant faire bien l'affaire. J'ai voulu faire un petit test très bête avec un hello world en C :
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main(void)
  4. {
  5. printf("Hello World" );
  6. return 0;
  7. }


 
J'ai compilé ce programme sous le nom hello.
 
Voici mon petit script php :
 

Code :
  1. <?php
  2. $output = shell_exec('./hello');
  3. echo"sortie : $output";
  4. ?>


 
 
Bon en sortie, je n'ai rien le programme que j'ai créer ne s'exécutant pas apparemment. J'ai donc regardé du côté de la configuration de php sur le serveur et j'ai vu ça :
 
safe_mode Off Off
safe_mode_exec_dir no value no value
safe_mode_gid Off Off
safe_mode_include_dir no value no value
 
Apparemment, le safe_mode n'est pas activé je devrais donc pouvoir utiliser les fonctions de la famille exec.
J'ai donc testé shell_exec() sur des commandes du shell telle qu'un simple ls ou un echo et là ça marche, l'exécution se produit bien et j'ai bien l'affichage du résultat sur ma page php.
 
Donc, je me demande d'où mon problème pourrait venir par rapport à l'exécution d'un des mes propres exécutables.
Peut être un problème de droit (mais j'ai donné tous les droits sur l'exécutable).
 
Quelqu'un aurait une idée ?
 
Merci d'avance de votre aide.
 
Sylvain.

mood
Publicité
Posté le 25-01-2006 à 22:47:17  profilanswer
 

n°1292367
energiez
Posté le 26-01-2006 à 00:40:41  profilanswer
 

Peut etre mettre :  
 $output = shell_exec('./hello.c');  
 
Rien de certain, je onnais pas cette fonction !

n°1292627
sylsau
Posté le 26-01-2006 à 13:21:25  profilanswer
 

hello.c n'est pas un exécutable ça n'a pas de sens une telle ligne de commande dans un shell.
 
Personne ?

n°1292682
omega2
Posté le 26-01-2006 à 14:31:20  profilanswer
 

Vérifie le répertoire d'exécution afin de t'assurer que le chemin d'accés vers l'exécutable est le bon.
Les versions récentes de php en ligne de commande ne changent plus le répertoire d'exécution pour celui du script.

n°1292831
sylsau
Posté le 26-01-2006 à 16:45:19  profilanswer
 

Je le vérifie comment le répertoire d'exécution ?
Y a une fonction en php peut être ?

n°1292849
omega2
Posté le 26-01-2006 à 16:52:14  profilanswer
 

Recherche du mot "dossier" dans la documentation disponible sur le site newen.
Résultat (j'ai mis que les premiers résultats) :

Citation :

  scandir Liste les fichiers et dossiers dans un dossier  
   readdir Lit une entrée du dossier  
   dirname Renvoie le nom du dossier  
   getcwd Retourne le dossier de travail courant  
   rmdir Efface un dossier  
   mkdir Crée un dossier


Donc oui, il y en a une.

n°1292940
sylsau
Posté le 26-01-2006 à 18:25:08  profilanswer
 

J'ai donc testé avec getcwd et le répertoire d'exécution correspond bien au répertoire où j'ai mis mon exécutable hello.

n°1293014
afbilou
pouet your life
Posté le 26-01-2006 à 20:21:35  profilanswer
 

Tu es bien sur un serveur personnel sur ta propre machine ou bien sur un serveur dedié ?
 
Pourquoi ne pas utiliser les autres arguments de exec ? et passthru ?


Message édité par afbilou le 26-01-2006 à 20:24:45
n°1293119
sylsau
Posté le 27-01-2006 à 00:43:06  profilanswer
 

J'ai testé sur mon serveur personnel et tout marche en fait.
Et là où ça ne veut pas sur mon espace mutualisé chez OVH.
 
J'ai essayé le code avec exec et system, le résultat est le même : rien ne  se passe.  
En essayant avec passthru, le résultat renvoyé comme valeur est 1 mais l'affichage ne se fait pas non plus.
 

n°1293133
kalex
Posté le 27-01-2006 à 03:23:07  profilanswer
 

Si le safe_mode est à off, c'est sans doute que PHP est exécuté par un utilisateur aux droits réduits.

mood
Publicité
Posté le 27-01-2006 à 03:23:07  profilanswer
 

n°1293151
gatsu35
Blablaté par Harko
Posté le 27-01-2006 à 09:09:42  profilanswer
 

Sur un hébergement mutualisé tu as aucune chance d'avoir la possibilité d'executer un programme.
Seul un serveur dédié te permettras.

n°1293202
omega2
Posté le 27-01-2006 à 10:30:16  profilanswer
 

kalex > le safe_mode étant à off, ce n'est pas php qui limite les possibilités. Peut être que l'utilisateur est limité mais si sylsau à fait un chmod 777 sur son fichier et les dossiers du site amenant à ce dossier alors il ne devrait pas y avoir de probléme de ce côté là non plus.
 
Gatsu35 > Si les fonctions telles qu' "exec" était désactivé, il ne devrait pas avoir une erreur d'affiché? En plus il dit que ca marche en exécutant des programmes tels que "ls", c'est donc que la fonction est utilisable. A ton avis, ca pourait être quel réglage qui permet d'empécher l'exécution des scripts situé dans le dossier du site web quand le "safe_mode" est désactivé et que le "safe_mode_exec_dir" est indéfini?

n°1293610
kalex
Posté le 27-01-2006 à 16:32:44  profilanswer
 

omega2 a écrit :

kalex > le safe_mode étant à off, ce n'est pas php qui limite les possibilités. Peut être que l'utilisateur est limité mais si sylsau à fait un chmod 777 sur son fichier et les dossiers du site amenant à ce dossier alors il ne devrait pas y avoir de probléme de ce côté là non plus.

chmod peut être autorisé, mais pas les programmes perso.

n°1293641
omega2
Posté le 27-01-2006 à 16:52:40  profilanswer
 

kalex > ben justement comment ils arrivent à bloquer au niveau de l'OS les programmes situé dans un répertoire donnée? Ca m'intéresse de le savoir ne seraisse que pour ne pas chercher comme un couillon au niveau des réglages de php pendant des heures si un jour je me retrouve dans cette situation.

n°1293654
kalex
Posté le 27-01-2006 à 17:01:57  profilanswer
 

Je sais que c'est possible, car je l'ai vécu (en tant qu'user :cry: ).
Si je devais mettre ça en place, je pense que je chercherais du côté de chroot.

n°1293663
kalex
Posté le 27-01-2006 à 17:08:38  profilanswer
 

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Utiliser exec() en php

 

Sujets relatifs
URGENT ! Commande exec() qui ne fait rien !![Divers] Quel langage utiliser pour développer un selecteur vidéo ?
[.NET][OFFICE] Fusion de documents Office: utiliser les VSTO ?[Java] Runtime.exec() et environnement Windows et dll
[Java] Integer dans un Vector: utiliser valueOf() ou new ?librairie C pour utiliser l'ethernet
utiliser une bibliothèque[C++] Comment utiliser ça (Interface??) ??
[C++] Utiliser un PageScroller avec une ToolBar ???utiliser mount() dans un prog execute par lambda
Plus de sujets relatifs à : Utiliser exec() en php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR