输出到 REBOL2 中的标准



我正在尝试让我的 CGI 脚本在我的虚拟主机上运行(运行在 FreeBSD 上)。为了调试为什么我总是收到可怕的"脚本标头过早结束"错误,他们的支持建议我将所有输出重定向到 stderr,而不是print它。查找如何执行此操作,我遇到了一张非常旧的RAMBO票证,但看起来它从未实施过。

根据这个问题的一些答案,似乎我应该能够做一个call {echo Hello, world >&2}来实现这一点,但它不起作用。

如何在 REBOL2 中写入 stderr?

对于我的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; 

这个网页有一些建议 http://www.liquidweb.com/kb/apache-error-premature-end-of-script-headers/解决您的实际问题。也许您没有在脚本中打印标题作为第一件事,这必须是要做的第一件事。也许权限不够,或者 .r 文件类型没有正确添加到您的 .htaccess 作为 cgi 文件。您的(正确!)rebol 核心可执行文件没有正确的权限。或者您的脚本最终陷入无限循环?

重定向

Rebol cgi 脚本错误的一些提示:http://www.rebol.com/docs/core23/rebolcore-2.html#section-6.2

迟到总比没有好...我刚刚在我的 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

相关内容

  • 没有找到相关文章

最新更新