Je pense que le problème se situe avec jpegtobpm et son stdout / stderr , peut-être que php n'interprete pas correctement ces flux... d'ou ton problème de retour. J'ai essayé toute les fonctions php et le mieux que j'arrive à avoir c'est un code : 127 sur $int return (erreur ou pas meme résultat) pour celles qui le supporte : Commande php(command,$array,$int return).
http://www.meta.rezoo.org/test.php
edit(miam finis): Le seul mode qui permet de passer directement une commande au shell en php est par défaut désactivé sur la plupart des serveurs web sécurisés :les 2 ligne d'erreurs, le safe mode est on. le script est statique , sers à rien d'essayer d'y passer des variables (pour les petits malins..y'en a toujours..).
J'ai fait ce script linéairement, en incluant ta boucle for meme si connaissant la nature du stdout de la librairie, ça ne servirais à rien, juste pour etre sur.
Nous avons rencontré un problème similaire lors de la mise en place d'une plate forme de controle des serveurs de jeux. Je ne vais pas entrer dans le détail, mais nous utilisions perl pour le passage des commandes aux serveurs "esclaves" via la commande system(),des
wrappers cgi (écrit en shell)utilisant ssh pour la communication serveurs esclaves<->master, mysql pour le stockage des variables et screen ou nohup pour envoyer les processus dans le background sans en perdre le controle.
l'interet,l'avantage..? System() en perl retourne un code de 0 dans $? s'il n'y a pas eu d'erreur pour le shell et tout autre chiffre(c pas tjrs le même
) pour signaler une erreur. Pour accompagner le dévelopement il fut trés facile de débuger en ajoutant des echo dans les wrappers...
Je suis trop nioub pour trouver une solution en php, si je me réfère aux pages de man, php devrait retourner stdout avec passthru Or c'est pas le cas. la faute va a jpegtopnm, je dois partir manger mais une idée serait d'utiliser nohup ou screen et récupérer stdout via les fichier .out qu'ils créent,si tu tiens vraiment à voir la série de "jpegtopnm: WRITING PPM FILE" (stdout de la lib..) qui n'a que trés peu d'intéret finalement vu le message que ça transporte... Ou basculer ton serveur en mode non-safe et tester (avec les risque que ça comporte). Ou encore faire un peu de perl
Message édité par efflamm le 15-10-2004 à 20:51:36