[英]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.