Pergunta

Estou correndo /usr/bin/perl ou /usr/bin/php através de um NSTask e quer recuperar o HTTP cabeçalhos do programa. Eu já formatado adequadamente o meio ambiente (Perl requer env vars a ser prefixado com HTTP_), mas nenhum da tarefa estão retornando outra coisa senão saída crua. Eu já passei pela documentação sobre NSTask e as páginas man para PHP e Perl, e não vi nenhuma maneira de forçar a saída dos cabeçalhos HTTP.

Todas as idéias?

Editar : Sei que esta é uma questão antiga, mas eu apenas redescobriu e percebi que deve reportar de volta. O problema era que eu deveria ter sido usando php-cli, e não php. Eu tive que fazer o download e php-cli compilação da origem para chegar a este trabalho como eu estava esperando. Uma vez eu fiz, no entanto, funcionou como um encanto. :)

Foi útil?

Solução

Você pode ter que prefixar sua saída com o cabeçalho HTTP, construído por você com base na saída cru de seu perl ou script php.

Por exemplo, você sabe que a saída cru de um script php seria de tipo de conteúdo: text / html, e você pode obter o comprimento do próprio saída. Pelo menos eu acho que é o que eu fiz quando implementação de uma solução similar.

Outras dicas

Você não pode visualizar ou alterar o ambiente de outro processo. A exceção é que você pode mudar o ambiente de um processo filho, mas somente quando você cria esse processo. Assim, você pode configurar o ambiente inicial de seu perl ou subprocesso php, mas você não pode ler o que ambiente ele tem mais tarde, e você certamente não pode ver o ambiente que tinha quando saiu.

Você precisa ter o Perl ou PHP saída do script seu ambiente em algum formato, e li que em seu processo de cacau através de um tubo.

O roteiro imprimir os cabeçalhos quando você executá-lo a partir do Terminal? Se assim for, talvez usando -[NSTask setStandard*:] (talvez usando NSPipe) pode ajudar a capturar a saída. Se não, é possível que as injeta servidor web os cabeçalhos como ele processa o CGI.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top