2010-08-09 4 views
1

Je suis en cours d'exécution de la commande ci-dessous de imagemgaick qui sort à stdout:capture sortie de la commande ImageMagick en php

compare <img1> <img2> -metric MAE null: 

Je suis en train de capturer la sortie de cette commande à partir de PHP. Normalement, j'utilise les commandes exec ($ cmd, $ output) qui empêche la sortie de cmd d'aller vers stdout et place à la place dans le tableau $ output. Cependant, pour quelque raison que ce soit, la sortie continue à stdout et le tableau de sortie est vide.

Une idée de comment contourner ce problème?

Merci.

Répondre

2

exec() ne place que la sortie vers STDOUT dans le tableau de sortie, mais divers outils imagemagick fournissent également des messages à STDERR. Vous pouvez rediriger les messages de STDERR vers STDOUT (et donc les obtenir dans le tableau $ output), en ajoutant ceci à la fin de votre commande: 2>&1

Alternativement, si vous voulez pouvoir différencier l'emplacement de sortie des messages , vous pouvez utiliser proc_open qui vous permet de spécifier des canaux séparés pour STDOUT et STDERR, et d'en extraire la sortie séparément.

+0

+1 pour être en premier lieu, accepté. – Max

0

Comparez les impressions à STDERR.

Utilisation:

exec("compare <img1> <img2> -metric MAE null: 2>&1", $output); 
Questions connexes