Question

Je suis en cours d'exécution ou /usr/bin/perl /usr/bin/php via un NSTask et que vous souhaitez récupérer les en-têtes HTTP du programme. J'ai correctement formaté l'environnement (Perl nécessite env vars être préfixé avec HTTP_), mais aucun de la tâche reviennent autre chose que la production brute. Je suis dans la documentation sur NSTask et les pages de manuel pour php et perl, et ai vu aucun moyen de forcer la sortie des en-têtes HTTP.

Toutes les idées?

EDIT : Je sais que c'est une question ancienne, mais je redécouvert et réalisé que je devrais faire rapport. Le problème était que je me sers php-cli, et non php. Je devais télécharger et compiler php-cli de source pour obtenir que cela fonctionne comme je l'attendais. Cependant, une fois que je l'ai fait, cela a fonctionné comme un charme. :)

Était-ce utile?

La solution

Vous pourriez avoir à préfixer votre sortie avec l'en-tête HTTP, construit par vous en fonction de la sortie brute de votre script Perl ou PHP.

Par exemple, vous savez que la sortie brute à partir d'un script php serait-type de contenu: text / html, et vous pouvez obtenir la longueur de la sortie elle-même. Au moins, je pense que ce que je faisais la mise en œuvre d'une solution similaire.

Autres conseils

Vous ne pouvez pas afficher ou modifier l'environnement d'un autre processus. L'exception est que vous pouvez changer l'environnement d'un processus enfant, mais seulement lorsque vous créez ce processus. Ainsi, vous pouvez configurer l'environnement initial de votre perl ou php sous-processus, mais vous ne pouvez pas lire quel environnement il a plus tard, et vous ne pouvez certainement pas voir quel environnement il avait quand il est sorti.

Vous devez faire la sortie du script Perl ou PHP son environnement dans un format, et lu que dans votre processus de cacao à travers un tuyau.

Est-ce que le script imprime les en-têtes lorsque vous l'exécutez à partir du terminal? Si oui, peut-être à l'aide -[NSTask setStandard*:] (peut-être à l'aide NSPipe) peut aider à capturer la sortie. Sinon, il est possible que le serveur Web injecte les en-têtes comme il traite le CGI.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top