2

我正在运行/usr/bin/perl/usr/bin/php通过 NSTask 运行并想要检索程序的 HTTP 标头。我已经正确格式化了环境(Perl 要求 env vars 以 为前缀HTTP_),但是除了原始输出之外,这两个任务都没有返回任何内容。我已经阅读了关于 NSTask 的文档以及 php 和 perl 的手册页,但还没有看到任何强制输出 HTTP 标头的方法。

有任何想法吗?

编辑:我意识到这是一个古老的问题,但我刚刚重新发现它并意识到我应该报告。问题是我应该一直在使用php-cli,而不是php。我必须php-cli从源代码下载和编译才能使其按预期工作。然而,一旦我这样做了,它就像一个魅力。:)

4

3 回答 3

3

您可能必须在输出前加上 HTTP 标头,由您根据 perl 或 php 脚本的原始输出构建。

例如,您知道 php 脚本的原始输出是内容类型:text/html,您可以从输出本身获取长度。至少我认为这就是我在实施类似解决方案时所做的。

于 2009-09-22T04:59:50.133 回答
1

您无法查看或更改另一个进程的环境。例外情况是您可以更改子进程的环境,但只能在创建该进程时进行。因此,您可以设置您的 perl 或 php 子进程的初始环境,但是您无法读取它后来的环境,当然您也无法查看它退出时的环境。

您需要让 Perl 或 PHP 脚本以某种格式输出其环境,并通过管道将其读入您的 Cocoa 进程。

于 2009-09-22T02:34:18.227 回答
0

当您从终端运行脚本时,它会打印标题吗?如果是这样,也许使用-[NSTask setStandard*:](也许使用 NSPipe)可以帮助捕获输出。如果不是,则 Web 服务器可能会在处理 CGI 时注入标头。

于 2009-09-22T21:14:56.413 回答