par
Sékiltoyai » 27 mars 2013, 19:38
Bonjour,
Ouch, il peut y avoir de nombreuses raisons de failer à partir du moment où on tape dans la ligne de commande en PHP. Je vais y aller du plus probable au moins probable.
- En un, tu essayes d'exécuter top, qui est un programme fait en ncurses. Concrètement quand tu le lances en SSH il n'y a pas de problème vu qu'il autodétecte ton terminal et t'affiche sa belle interface à la bonne taille jusqu'à ce que tu le killes.
En PHP d'une part tu n'as pas les capabilités du terminal pour récupérer la sortie (PHP récupère la sortie standard), d'autre part PHP doit attendre patiemment que la commande s'arrête.
Par ailleurs certains programmes changent leur comportement en fonction de si la sortie est capable de faire tourner l'interface ncurses mais top ne semble pas en faire partie.
- En deux un problème de droits. Il est possible que ta conf de PHP interdise l'exécution de certaines commandes. Bon, je n'y crois pas trop car normalement ça tu dois le voir dans tes logs.
Mes conseils:
- Commencer par exécuter un programme plus simple pour valider que tu réussis bien à exécuter des commandes et en récupérer la sortie standard en PHP. Un petit `ls .` fera tout à fait l'affaire puisqu'il ne sera pas contraint en terme de sécurité.
- Ensuite plutôt que d'exécuter des programmes en ncurses, utilise des commandes qui s'exécutent en one shot, comme `ps`.
Cordialement
Bonjour,
Ouch, il peut y avoir de nombreuses raisons de failer à partir du moment où on tape dans la ligne de commande en PHP. Je vais y aller du plus probable au moins probable.
[list]
[*] En un, tu essayes d'exécuter top, qui est un programme fait en ncurses. Concrètement quand tu le lances en SSH il n'y a pas de problème vu qu'il autodétecte ton terminal et t'affiche sa belle interface à la bonne taille jusqu'à ce que tu le killes.
En PHP d'une part tu n'as pas les capabilités du terminal pour récupérer la sortie (PHP récupère la sortie standard), d'autre part PHP doit attendre patiemment que la commande s'arrête.
Par ailleurs certains programmes changent leur comportement en fonction de si la sortie est capable de faire tourner l'interface ncurses mais top ne semble pas en faire partie.
[*] En deux un problème de droits. Il est possible que ta conf de PHP interdise l'exécution de certaines commandes. Bon, je n'y crois pas trop car normalement ça tu dois le voir dans tes logs.[/list]
Mes conseils:
[list]
[*] Commencer par exécuter un programme plus simple pour valider que tu réussis bien à exécuter des commandes et en récupérer la sortie standard en PHP. Un petit `ls .` fera tout à fait l'affaire puisqu'il ne sera pas contraint en terme de sécurité.
[*] Ensuite plutôt que d'exécuter des programmes en ncurses, utilise des commandes qui s'exécutent en one shot, comme `ps`.[/list]
Cordialement