Domanda

Io corro /usr/bin/perl o /usr/bin/php tramite un NSTask e vogliono recuperare le intestazioni HTTP del programma. Ho formattato correttamente l'ambiente (Perl richiede env vars da prefisso HTTP_), ma nessuno dei due il compito stanno tornando qualcosa di diverso uscita crudo. Sono stato attraverso la documentazione sulle NSTask e le pagine man di PHP e Perl, e non ho visto alcun modo per forzare l'uscita di intestazioni HTTP.

Tutte le idee?

Modifica : Mi rendo conto che questo è un antico domanda, ma ho appena riscoperto e reso conto che dovrei riferire. Il problema era che io ho usato php-cli, e non php. Ho dovuto scaricare e compilare php-cli dalla sorgente alla arrivare a questo lavoro come mi aspettavo. Una volta ho fatto, però, ha funzionato come un fascino. :)

È stato utile?

Soluzione

Si potrebbe essere necessario anteporre l'output con l'header HTTP, costruita da voi in base all'uscita grezzo dallo script Perl o PHP.

Per esempio, si sa che l'uscita prima da uno script php sarebbe di Content-Type: text / html, e si può ottenere la lunghezza dall'output stesso. Almeno io penso che quello è quello che ho fatto in sede di attuazione di una soluzione simile.

Altri suggerimenti

Non è possibile visualizzare o modificare l'ambiente di un altro processo. L'eccezione è che si può cambiare l'ambiente di un processo figlio, ma solo quando si crea quel processo. Così, è possibile impostare l'ambiente iniziale del vostro Perl o PHP sottoprocesso, ma non è possibile leggere ciò che l'ambiente ha più tardi, e non si può certo vedere quale ambiente che aveva quando è uscito.

Hai bisogno di fare il Perl o PHP output dello script il suo ambiente in qualche formato, e leggere che nel vostro processo di cacao attraverso un tubo.

Il copione stampare le intestazioni quando lo si esegue dal Terminal? Se è così, magari utilizzando -[NSTask setStandard*:] (magari usando NSPipe) può aiutare a catturare l'output. In caso contrario, è possibile che il server web inietta le intestazioni come si elabora il CGI.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top