在 REBOL2 中输出到标准错误?
Posted
技术标签:
【中文标题】在 REBOL2 中输出到标准错误?【英文标题】:Output to stderr in REBOL2? 【发布时间】:2015-03-10 22:05:09 【问题描述】:我正在尝试让我的 CGI 脚本在我的网络主机(在 FreeBSD 上运行)上运行。为了调试为什么我不断收到可怕的“脚本头过早结束”错误,他们的支持建议我将所有输出重定向到 stderr,而不是 print
ing 它。查找如何做到这一点,我遇到了一个非常古老的RAMBO ticket,但看起来它从未实现过。
根据this question 的一些答案,似乎我应该能够通过call echo Hello, world >&2
来实现这一点,但它不起作用。
如何在 REBOL2 中写入 stderr?
【问题讨论】:
调试 CGI 问题的另一个方法是在REBOL [...]
标头之后添加一个 prin ["Content-type: text/plain" crlf crlf]
作为第一件事。
不幸的是,即使只是一个带有 shebang 行、REBOL 标头的脚本,仍然会给我错误。
你能显示那个最小 CGI 脚本的源代码吗?
我已经上传了here。
【参考方案1】:
对于我的 CGI 特定场景,我有一个非常糟糕的解决方法。由于在 Perl 中写入 stderr(我完全不熟悉)是单行的,因此我目前正在从 Perl 调用 REBOL 脚本并将其输出从那里打印到 stderr:
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
# Note the backticks
my $the_string = `/home/public/rebol -csw test-reb.cgi`;
print STDERR $the_string;
【讨论】:
【参考方案2】:这个网页有一些建议http://www.liquidweb.com/kb/apache-error-premature-end-of-script-headers/ 解决您的实际问题。也许您没有将标题打印为脚本中的第一件事,这必须是第一件事。可能权限不够,或者 .r 文件类型未正确添加到您的 .htaccess 中作为 cgi 文件。您的(正确的!)rebol core exe 没有正确的权限。还是您的脚本陷入无限循环?
【讨论】:
【参考方案3】:为 Rebol cgi 脚本重定向错误的一些提示: http://www.rebol.com/docs/core23/rebolcore-2.html#section-6.2
【讨论】:
【参考方案4】:迟到总比没有好...我刚刚在我的 Rebol 分支中为 Rebol3 实现了它。
https://github.com/Oldes/Rebol-issues/issues/2468
语法可能会稍微改变一下,因为我不喜欢系统控制台端口被命名为input
,尽管它不仅仅是用于输入。
目前为止:
print 1 ;<- std_out
modify system/ports/input 'error on
print 2 ;<- std_err
modify system/ports/input 'error off
print 3 ;<- std_out
【讨论】:
以上是关于在 REBOL2 中输出到标准错误?的主要内容,如果未能解决你的问题,请参考以下文章