Bonjour à tous,
La question que j'ai est un peu technique... Ne sachant pas trop où la poser, je la met ici, même si elle concerne plus Apache, à mon avis.
Voici mon problème:
J'ai un exécutable que je lance depuis mon script PHP à l'aide d'un:
Comme vous pouvez le voir, je lui passe un pipe qui me permet de la commander depuis une application externe (ici, en l'occurrence, c'est pour garder la main dessus, malgré les diverses requêtes). J'aurais créer ce pipe préalablement avec :Code:exec("/usr/bin/appli --pipe=/tmp/monpipe &");
Ensuite, au requêtes suivantes, j'essaye d'arrêter mon application en lui envoyant une commande:Code:posix_mkfifo('/tmp/monpipe', 0777);
Et là, ça ne marche pas, quand elle est exécuté depuis apache.Code:exec("echo quit > /tmp/monpipe");
Quand je lance en utilisateur:
Elle se lance et s'arrête sans soucis.Code:
1
2$ /usr/bin/appli --pipe=/tmp/monpipe & $ echo quit > /tmp/monpipe
Quand je lance les scripts PHP sans apache:
Elle se lance et s'arrête sans soucis, également.Code:
1
2 $ php launch_appli.php $ php quit_appli.php
Mais quand je les exécutes depuis apache, l'application s'exécute bien, et tourne dans les taches. Mais pour l'arrêt, c'est comme si l'application n'avait jamais pris le pipe. L'arrêt depuis apache coince, ainsi que:
Ça coince.Code:$ php quit_appli.php
Ça coince aussi (aucune réponse). C'est ce que ça fait lorsque que lance cette commande sans avoir d'application en écoute de l'autre coté.Code:$ echo quit > /tmp/monpipe
Donc, par déduction, ce doit être une sécurité de apache quelque part en empêche de genre de chose. Mais toute mes recherches sont restés infructueuses.
Si quelqu'un à une idée là dessus, je suis preneur (je planche sur ce problème depuis plusieurs mois)
Merci beaucoup
Snark.