繁体   English   中英

在Perl中,如何禁用在必需脚本中加载的CGI :: Carp?

[英]In Perl, how can I disable CGI::Carp that was loaded in a required script?

我有一个小的Perl程序,我想在命令行上运行。 我需要require另一个Perl脚本(而不是模块)别人写。 反过来,这require一些其他脚本。 (我对这种方式无法做任何事情)。

现在,其中一个脚本use CGI;真的很烦人 use CGI; 并在其中use CGI::Carp qw(fatalsToBrowser) 我不要那个。 每次出现故障时,我的控制台上有15行500 Internal Server Error page真的让我感到紧张。 我试过了

require 'otherscript.pl';
no CGI;
no CGI::Carp;

no CGI;
no CGI::Carp;
require 'otherscript.pl';

卸载它,就像使用doc描述的那样,但它不起作用。

我可以以某种方式操纵符号表或做一些其他魔法来摆脱它吗?

CGI :: Carp包中没有任何unimport例程,因此no任何效果。 手动撤消import例程的相关部分。

词汇范围(见警告 ):

local $main::SIG{__DIE__} = \&CGI::Carp::realdie;

全球范围:

CGI::Carp::set_die_handler(\&CGI::Carp::realdie);

通过将$CGI::Carp::TO_BROWSER变量设置为0您可以禁止打印消息的HTML版本。

使用fatalsToBrowser的代码来自哪里? 虽然fatalsToBrowser是一个非常有用的开发工具,但它应该只用于开发。 在生产环境中,可以认为fatalsToBrowser存在安全风险,因为它可能会给试图破解服务器的人提供太多信息。

因此,通过一切手段使用其他人提到的技巧来关闭它。 但是您也应该尽一切可能确保更改违规代码,以便在生产中不使用fatalsToBrowser

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM