Safe_mode_exec_dir [Résolu]

sahliali 90 Messages postés dimanche 14 septembre 2003Date d'inscription 3 juillet 2008 Dernière intervention - 2 juil. 2008 à 13:07 - Dernière réponse : neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention
- 3 juil. 2008 à 14:21
Bonjour,

J'ai un problème avec la configuration et l'exécution d'un code en utilisant la fonction exec.
En fait j'ai configurer mon fichier PHP.ini en
safe_mode = off
safe_mode_exec_dir = ".;${path}\php\command"  
l'emplacement ou je veux exécuter un fichier tracert.php qui contient le code suivant

exec("tracert www.google.fr", $tableau);
foreach($tableau as $row)
{
echo $row;
echo "
";
}

le problème comment je fait appel à ce fichier, sachant que je veux que le temps d'exécution peut dérouler plusque que 30 seconde, c'est pour cela que j'utilise le safe_mode = off et je spécifie l'emplacement des commandes à exécuter.

Merci.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention - 3 juil. 2008 à 14:21
3
Merci
Si safe_mode n'est pas activé, exec() peut exécuter un exécutable qui se trouve n'importe où, pour peu que les permissions le permettent.

Le mieux est de ne pas attendre la fin de l'exécution du script, de rediriger la sortie de celui-ci dans un fichier, et d'en vérifier le contenu.

Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...

Merci neigedhiver 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de neigedhiver
neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention - 2 juil. 2008 à 15:56
0
Merci
Salut,

Si tu désactives safe_mode, inutile de configurer safe_mode_exec_dir, cette directive ne sera pas prise en compte.

Si tu veux simplement augmenter le temps maximum d'exécution d'un script, il te suffit non pas de désactiver safe_mode.
Quitte à modifier la configuration de PHP, autant simplement augmenter le temps d'exécution : max_execution_time
Si tu veux pouvoir modifier cette valeur dans tes scripts, alors oui, il faut que safe_mode soit désactivé et utiliser la fonction set_time_limit()

Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
Commenter la réponse de neigedhiver
neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention - 2 juil. 2008 à 15:58
0
Merci
Tiens, j'me suis pas relu et y'a une phrase qui veut pas dire grand chose... :/

Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
Commenter la réponse de neigedhiver
sahliali 90 Messages postés dimanche 14 septembre 2003Date d'inscription 3 juillet 2008 Dernière intervention - 2 juil. 2008 à 18:56
0
Merci
Merci pour votre reponse, mais je sais pas le temps d'exécution du processus, le processus peut prendre un jours ou meme plus d'exécution, c'est  pour ca que j'ai penser à  configurer le safe_mode_exec_dir et safe_mode = On,  comme décrit dans le manuel de exec ( ici )
Commenter la réponse de sahliali
neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention - 3 juil. 2008 à 10:29
0
Merci
Salut,

Quelques précisions me paraissent nécessaires.

PHP ne permet pas l'exécution d'un script sur une durée illimitée : il y a FORCEMENT une limite de temps, fixée par la configuration. Ca, on ne PEUT PAS y échapper.
Donc : on peut tout à fait autoriser, dans la config de PHP, une durée d'exécution très longue ; mais cette durée est nécessairement déterminée, et ne peut en aucune cas être illimitée

Il est dit dans la doc : "Lorsque le
safe mode est activé, vous pouvez
uniquement exécuter des programmes qui se situent dans le dossier défini par
safe_mode_exec_dir."
Cela ne signifie ABSOUMENT PAS que pour exécuter un programme externe, il faille obligatoirement activer safe_mode ! AU CONTRAIRE ! La doc explique que SI safe_mode est activé, alors seuls les programmes se trouvant dans le répertoire défini par safe_mode_exec_dir dans la configuration de PHP pourront être exécutés.
Si safe_mode n'est pas activé, cette limitation n'existe pas. Sur un hébergement personnel, on peut (on doit ?) désactiver safe_mode pour permettre l'exécution de programmes externes que l'on veut sans contrainte de répertoire.

Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
Commenter la réponse de neigedhiver
sahliali 90 Messages postés dimanche 14 septembre 2003Date d'inscription 3 juillet 2008 Dernière intervention - 3 juil. 2008 à 13:24
0
Merci
Ok, la je comprend bien, donc la solution que je propose de faire un script sh qui va faire la tache en arrière plan, mais mon problème c'est ou je doit mettre le script pour que la fonction exec lui fais appel, et aussi comment je peut savoir la fin d'éxecution du script.
exemple :
$id = exec("monscript.sh");
if($id == "0")
// script en cours d'exécution
else
// fin de script
Commenter la réponse de sahliali

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.