Вопрос

я бегу /usr/bin/perl или /usr/bin/php через NSTAsk и хотите получить HTTP-заголовки программы.Я правильно отформатировал среду (Perl требует, чтобы переменные окружения имели префикс HTTP_), но ни одна из задач не возвращает ничего, кроме необработанных результатов.Я просмотрел документацию по NSTask и справочные страницы для php и perl и не нашел никакого способа принудительно выводить заголовки HTTP.

Есть идеи?

РЕДАКТИРОВАТЬ:Я понимаю, что это древний вопрос, но я только что открыл его заново и понял, что должен ответить на него.Проблема заключалась в том, что мне следовало использовать php-cli, и не php.Мне пришлось скачать и скомпилировать php-cli из исходного кода, чтобы заставить это работать так, как я ожидал.Однако как только я это сделал, это сработало как шарм.:)

Это было полезно?

Решение

Возможно, вам придется добавить к выходным данным префикс HTTP-заголовка, созданного вами на основе необработанных выходных данных вашего сценария perl или php.

Например, вы знаете, что необработанный вывод PHP-скрипта будет иметь тип контента:text/html, а длину можно получить из самого вывода.По крайней мере, я думаю, что именно так я и поступил при реализации аналогичного решения.

Другие советы

Вы не можете просмотреть или изменить среду другого процесса.Исключением является то, что вы можете изменить среду дочернего процесса, но только при его создании.Таким образом, вы можете настроить начальную среду вашего подпроцесса perl или php, но вы не сможете прочитать, какая среда у него была позже, и вы, конечно, не сможете просмотреть, какая среда была у него при выходе.

Вам нужно заставить сценарий Perl или PHP выводить свою среду в каком-то формате и считывать его в процесс Cocoa через канал.

Скрипт печатает заголовки при запуске из терминала?Если да, возможно, используя -[NSTask setStandard*:] (возможно, с использованием NSPipe) может помочь захватить выходные данные.Если нет, возможно, веб-сервер вводит заголовки при обработке CGI.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top