我正在通过NSTask运行/usr/bin/perl
或/usr/bin/php
并想要检索程序的HTTP标头。我已经正确地格式化了环境(Perl要求env vars以HTTP_
为前缀),但是这两个任务都没有返回除原始输出之外的任何内容。我已经浏览了有关NSTask和php和perl的手册页的文档,并且还没有看到任何强制输出HTTP头的方法。
有什么想法吗?
编辑:我意识到这是一个古老的问题,但我刚刚重新发现它,并意识到我应该报告回来。问题是我应该使用php-cli
,而不是php
。我必须从源代码下载并编译php-cli
以使其按照我的预期运行。然而,一旦我这样做,它就像一个魅力。 :)
答案 0 :(得分:3)
您可能必须在输出前添加HTTP标头,由您根据perl或php脚本的原始输出构建。
例如,您知道php脚本的原始输出将是content-type:text / html,您可以从输出本身获取长度。至少我认为这是我在实施类似解决方案时所做的。
答案 1 :(得分:1)
您无法查看或更改其他进程的环境。例外情况是您可以更改子进程的环境,但仅限于创建该进程时。因此,您可以设置perl或php子进程的初始环境,但是您无法读取它以后的环境,并且您当然无法查看它退出时的环境。
您需要让Perl或PHP脚本以某种格式输出其环境,并通过管道将其读入您的Cocoa流程。
答案 2 :(得分:0)
从终端运行脚本时,脚本是否会打印标题?如果是这样,也许使用-[NSTask setStandard*:]
(可能使用NSPipe)可以帮助捕获输出。如果没有,Web服务器可能会在处理CGI时注入标头。