简介
-
我试图在我的Ubuntu桌面上设置mason .
-
这是一个非常简单的设置,但在阅读了masonbook.com和mansonhq.com的部分后我仍然遇到了问题
-
我希望有人可以给我一个提示 . 请参阅下面的详细信息 .
本地服务器
-
Ubuntu 11.04桌面
-
梅森1.44(与Ubuntu合作)
-
新手到perl / mason
档案
-
mason.seedy2 - 这是一个cgi脚本 . 基本上,我设置了一个全局变量 - > $ user . 我想在index1.html中使用它
-
index1.html - 简单的html文件
-
apache.conf - 我不确定我做得对
错误
1. type http://localhost:81/index1.html in browser
2.
error: Error during compilation of /var/www/test/sj3/public_html/index1.html:
Global symbol "$user" requires explicit package name at /var/www/test/sj3/public_html/index1.html line 2.
context:
1:
2:
3:
4:
code stack: /usr/share/perl5/HTML/Mason/Interp.pm:450
/usr/share/perl5/HTML/Mason/Request.pm:249
/usr/share/perl5/HTML/Mason/Request.pm:212
/usr/share/perl5/HTML/Mason/ApacheHandler.pm:94
/usr/share/perl5/Class/Container.pm:275
/usr/share/perl5/Class/Container.pm:353
/usr/share/perl5/HTML/Mason/Interp.pm:348
/usr/share/perl5/HTML/Mason/ApacheHandler.pm:874
/usr/share/perl5/HTML/Mason/ApacheHandler.pm:828
(eval 34):8
-e:0
apache.conf
# Listen to other ports
Listen 81
ServerAdmin webmaster@localhost
DocumentRoot /var/www/test/sj3/public_html
PerlSetVar MasonCompRoot /var/www/test/sj3/public_html/
PerlSetVar MasonDataDir /var/www/test/sj3/mason/
Action html-mason /cgi-bin/mason.speedy2
SetHandler perl-script
PerlHandler HTML::Mason::ApacheHandler
index1.html
print %user
mason.speedy2
#!/usr/bin/perl -w
use strict;
use HTML::Mason::CGIHandler;
{
our($user, %session);
$user = "bla";
}
my $h = HTML::Mason::CGIHandler->new
(
data_dir => "$ENV{DOCUMENT_ROOT}/../mason",
allow_globals => [qw(%session $user)],
);
$h->handle_request;
2 回答
如果必须有site wide globals,则在apache处理程序中使用allow_globals声明它们,并在根级别autohandler中初始化它们 .
print%user是一个错字 . 它应该是$ user .
daotoad的建议很好,但我需要一段时间才能更改现有代码
前一个程序员有“/cgi-bin/mason.speedy2”包含所有全局变量和包,然后在/ apache.conf中嵌入/cgi-bin/mason.speedy2(即类似于在autohandler中声明它们) . 我的问题:/cgi-bin/mason.speedy2正在运行吗?如果它正在运行,为什么没有定义全局变量$ user?