Lorsque vous enchaînez des commandes unix telles que sort data.txt | less
, la commande stdout d'une commande "devient" le stdin d'une autre commande. Vous pouvez faire la même chose avec php lorsque vous appelez un autre processus. Mais dans votre cas, vous voulez les données de stdout d'un processus et l'envoyer à stdout php (l'envoyer au client).
La façon la plus simple est d'utiliser passthru()
header('Content-type: application/pdf');
passthru('yourcommand -o -');
Mais puisque vous devez définir l'en-tête application/pdf avant que les commandes envoie une sortie de la gestion des erreurs peut être difficile . Le client attend un document PDF et si vous envoyez autre chose, par ex. un message d'erreur en texte brut, le résultat sera ... confus.
Néanmoins, vous pouvez récupérer les données de la commande stdout de votre commande, mais sans que php colle automatiquement la stdout à la sortie stdout de php. voir popen() et/ou proc_open(). Vous obtiendrez une poignée que vous pourrez lire (presque comme une poignée de fichier) et obtiendrez la sortie de l'application vers stdout (avec proc_open vous obtenez également le flux stderr) sans aucun fichier physique.
Allez Kyle; faites-le. Nous en avons besoin hier. ;) – keithjgrant
Pourquoi y a-t-il un fichier en premier lieu? C'est à dire. n'est pas possible de garder toutes les données en mémoire sans écrire quelque chose dans un fichier? – VolkerK
La génération de PDF est effectuée via la ligne de commande Unix. Cette application l'a généré en tant que fichier. – Kyle