1

介绍

  • 我试图在我的 Ubuntu 桌面上设置 mason。
  • 这是一个非常简单的设置,但在阅读了 masonbook.com 和 mansonhq.com 的部分内容后,我仍然遇到了问题
  • 我希望有人能给我一个提示。请参阅下文了解更多详情。

本地服务器

  • Ubuntu 11.04 桌面
  • Mason 1.44(Ubuntu 自带)
  • perl/mason 的新手

文件

  • mason.seedy2 - 这是一个 cgi 脚本。基本上,我设置了一个全局变量 --> $user. 我想在 index1.html 中使用它
  • index1.html - 简单的 html 文件
  • apache.conf - 我不确定我做对了

错误

1. 在浏览器中输入 http://localhost:81/index1.html

2.

错误:编译/var/www/test/sj3/public_html/index1.html时出错:
全局符号“$user”需要在 /var/www/test/sj3/public_html/index1.html 第 2 行显示包名。

语境:    
1:      

2: 3:

4: 代码栈:/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 (评估 34):8 -e:0

apache.conf

# 监听其他端口
听 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/

    动作 html-mason /cgi-bin/mason.speedy2
     
            SetHandler perl 脚本
            PerlHandler HTML::Mason::ApacheHandler
    

index1.html

打印%用户

mason.speedy2

#!/usr/bin/perl -w

使用严格;
使用 HTML::Mason::CGIHandler;

{
    我们的($用户,%会话);
    $user = "bla";
}

我的 $h = HTML::Mason::CGIHandler->new
(
    data_dir => "$ENV{DOCUMENT_ROOT}/../mason",
    allow_globals => [qw(%session $user)],
);

$h->handle_request;
4

2 回答 2

2

如果您必须拥有站点范围的全局变量,请在 apache 处理程序中使用allow_globals声明它们,并在根级别autohandler中初始化它们。

于 2011-06-16T15:43:15.033 回答
0
  1. print %user 是一个错字。它应该是 $user。

  2. daotoad 的建议不错,但是更改现有代码需要一段时间

  3. 以前的程序员有“/cgi-bin/mason.speedy2”包含所有的全局变量和包,然后在apache.conf中嵌入/cgi-bin/mason.speedy2(即类似于在autohandler中声明它们)。4. 我的问题:/cgi-bin/mason.speedy2 正在运行吗?如果它正在运行,为什么没有定义全局变量 $user?

于 2011-06-17T01:58:00.653 回答