2016-01-14 1 views
-1

J'ai cette ligne de code pour exécuter une tâche de fond (convertir plusieurs fichiers PNG au format JPG)Comment 'sortir' d'un script PHP appelé par exec ou shell_exec?

exec("nohup path/to/php path/to/convertToJpg.php >> path/to/convert_to_jpg.log > /dev/null &"); 

Maintenant, je suis en train d'écrire le script convertToJpg.php et je ne peux pas comprendre comment des informations de sortie à partir de là pour qu'il sera connecté dans le convert_to_jpg.log. Lorsque j'essaie de google tout ce que je viens avec est de savoir comment appeler un script php de exec ou shell_exec, puisque les mots utilisés pour décrire les deux situations est presque la même.


Pour clarification

Un devis supplémentaire obtenu dans mon code lors de la copie vers SO il. Je l'ai réparé. Dans mon code d'origine le convertToJpg.php est appelé comme prévu, confirmé par error_logs placé à l'intérieur pour vérifier.

Quelques réponses ont pointé vers l'argument $output dans exec(). Si je comprends bien, cela vainc totalement le but de la redirection de shell en utilisant le >> path/to/convert_to_jpg.log.

Ma question est comment obtenir la sortie de la commande exec(), mais quel code dois-je utiliser pour réellement sortie (verbe) du convert_to_jpg.log


précisions

Si je appelez

exec("nohup path/to/php path/to/convertToJpg.php >> path/to/convert_to_jpg.log > /dev/null &"); 

ou

$results = shell_exec("path/to/php path/to/convertToJpg.php > /dev/null"); 
echo $results; 

ou

$results = ""; 
exec("path/to/php path/to/convertToJpg.php > /dev/null", $results); 
print_r($results); 

Peu importe lequel.

Voici convertToJpg.php

<?php 
    echo "Will this be in $results?"; // No, this did not end up in results. 

    error_log("error logs are being logged, so I know that this php file is being called"); 

    //I have tested echo, but that does not work. 
    //What php function do I use so that a string will be captured in the $output of an exec() call? 
?> 
+0

étant donné que php totalement invalide, il ne fonctionnera pas du tout en premier lieu ... –

+0

Qu'est-ce qui est invalide php? le mien ou le commentateur précédent qui a apparemment supprimé son commentaire? –

+0

vous avez édité le supplément '' 'dans l'appel de exec() ... –

Répondre

0

Ok, j'ai tout compris! Pour répondre simplement à la question, utilisez echo ou print.

C'était la première chose que j'ai essayé, mais cela n'a pas fonctionné, ce qui m'a fait penser que c'était une autre fonction que je devais appeler. (Je n'ai évidemment pas travaillé avec autant)

Le vrai problème que j'avais était le > /dev/null, qui rejetait toutes les sorties. Une fois que j'ai supprimé cela, ça va. Expliqué ici: What is /dev/null 2>&1? J'avais à un certain moment fait un copier/coller sans vraiment comprendre ce que cela a fait ...

Et parce que je blâmais la mauvaise chose j'ai fini avec cette question hors base.

0
$output = ""; 
$return_var = ""; 
exec("nohup path/to/php path/to/convertToJpg.php >> path/to/convert_to_jpg.log > /dev/null &", $output, $return_var); 

sortie $

Si l'argument de sortie est présent, le tableau sera rempli de chaque ligne de sortie de la commande. Les espaces de fin, tels que \ n, ne sont pas inclus dans ce tableau. Notez que si le tableau contient déjà des éléments, exec() s'ajoutera à la fin du tableau. Si vous ne voulez pas que la fonction ajoute des éléments, appelez unset() sur le tableau avant de le passer à exec().

$ return_var

Si l'argument return_var est présent avec l'argument de sortie, l'état de retour de la commande exécutée sera écrite à cette variable.

http://php.net/manual/en/function.exec.php

+0

Quelque chose ne va pas avec les guillemets –

+0

N'est-ce pas le point de la redirection de shell? C'est ce que '>>>> chemin/vers/convert_to_jpg.log' Ce que je demande, c'est quel code dois-je utiliser dans convertToJpg.php pour 'echo' à la sortie –

+0

Tout d'abord, son '$ output', ceci va imprimer tout ce que vous" echo "du script" convert_to_jpg ", ligne par ligne dans un tableau Le >>> est à écrire dans le fichier, echo est séparé, mais votre question est mal formatée – Kivylius