如何解释在-T
模式下运行Inline::Python
时出现的编译时错误信息?
在/usr/local/lib/perl/5.14.2/inline/python中使用-T开关运行时打开不安全的依赖项PM第193行
第193行是Inline::Python
打开$o->{API}{location}
的地方,我认为这是"内联目录"。
当然,我使用了必要的选项:
use constant _INLINE_DIR_ => '/var/myapp/inline';
use Inline Config => UNTAINT => 1,
NO_UNTAINT_WARN => 1,
DIRECTORY => _INLINE_DIR_;
我已经确保/var/myapp/inline
和它里面的所有东西都可以被每个人写,显然包括root和应用程序在运行时setuid
'ed的用户。
相同的脚本在我的计算机上没有问题,无论我是否以root身份启动它,运行Inline
0.50 Inline::Python
0.43,但是当我尝试在使用相同版本的Inline::Python
和Inline
的0.49或0.55版本的服务器上运行它时,会给我这个错误。
由于这在不同的环境中是不同的,我打赌不知怎么的,有一个环境变量,Inline
或Inline::Python
在执行UNTAINT
配置参数请求的步骤之前正在读取。
(与注释相反,我认为文件权限不会导致此消息,只有对命令行参数或环境变量的不安全依赖)
考虑到这一点,我将通过强制清除环境然后只添加那些你知道你需要的环境变量来开始你的脚本:
%ENV = ();
$ENV{'PATH'} = '/bin:/usr/bin:/usr/local/bin'; # Or whatever's appropriate
$ENV{'PYTHONPATH'} = '/usr/local/lib/python'; # Optional, if appropriate
# ... etc ...