sahliali
Messages postés90Date d'inscriptiondimanche 14 septembre 2003StatutMembreDernière intervention 3 juillet 2008
-
2 juil. 2008 à 13:07
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 2011
-
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
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.
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201118 2 juil. 2008 à 15:56
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...
sahliali
Messages postés90Date d'inscriptiondimanche 14 septembre 2003StatutMembreDernière intervention 3 juillet 2008 2 juil. 2008 à 18:56
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 )
Vous n’avez pas trouvé la réponse que vous recherchez ?
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201118 3 juil. 2008 à 10:29
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...
sahliali
Messages postés90Date d'inscriptiondimanche 14 septembre 2003StatutMembreDernière intervention 3 juillet 2008 3 juil. 2008 à 13:24
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