我正在使用 FastCGI 开发一个Perl脚本(使用CGI::Fast
和CGI::Carp 'fatalsToBrowser')
。
当我的脚本有编译错误时,它会导致浏览器挂起。似乎fatalsToBrowser
不像普通CGI那样工作(只是将编译错误发送到浏览器)。我该如何解决这个问题?
答案 0 :(得分:3)
我无法为您提供解决方法,但只有一个解释,FastCGI的工作方式完全不同。当执行CGI应用程序时,在执行之前提供标准描述符和environ,在FastCGI应用程序中,服务器(应用程序)必须首先接受来自客户端(通常是web服务器)的连接,并在接受请求和响应之前交换一些消息/记录。可以发送。 CGI :: Carp在perl的编译阶段发挥了作用,并假设在语法错误发生时(编译阶段)可以使用标准描述符,而CGI :: Fast.pm就是早期。
我是FCGI.pm(和libfcgi)的维护者之一,所以我将与CGI维护人员合作解决这个问题。
答案 1 :(得分:2)
我是CGI.pm维护者。我建议在这种情况下避免使用'fatalsToBrowser'。一些Perl框架在功能上做同样的事情。例如,使用CGI :: Application,有CGI::Application::Plugin::DebugScreen。其他框架也有类似之处。
在其他情况下,流行的'Carp'和'CGI :: Carp'模块如果最终导入同一名称空间,可能会发生冲突,因为它们都提供了相同名称的函数,如'carp'和'发牢骚'。我建议使用Carp并避免使用CGI :: Carp。