免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2931 | 回复: 3
打印 上一主题 下一主题

mod_perl 模块的当前目录在哪及怎么打开文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-19 21:01 |只看该作者 |倒序浏览
httpd.conf:

PerlModule myApache::Rocks
<Location /give_me_words>
   SetHandler perl-script
   erlHandler myApache::Rocks
   erlSendHeader On
</Location>

myApache::Rocks.pm:

#file:MyApache2/Rocks.pm

#---------------------

package myApache::Rocks;

use strict;
use Cwd;
use warnings;

use Apache2::RequestRec ();
use Apache2::RequestIO ();

use Apache2::Const -compile => qw(OK);

sub handler {
    my $r = shift;

    $r->content_type('text/plain');
    open(my $h, ">test") or die;
    print $h, "hehe";
    close $h;
    print "mod_perl 2.0 rocks!\n";

    return Apache2::Const::OK;
}
1;



结果: http://www.sample.org/give_me_words
只有以下一行, 这是对的:

/mod_perl 2.0 rocks!

但是没找到我建立的test文件。

问题:
1. 在这个Rock.pm里当前文件夹是什么?  我用Cwd::getcwd也没有找到。
2. 为什么在这里不能建立test文件?

[ 本帖最后由 huwenhuo 于 2009-11-19 21:05 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-11-19 21:11 |只看该作者
1. 使用绝对路径,如/tmp/test
2. 注意权限问题,是否对apache可写。

论坛徽章:
0
3 [报告]
发表于 2009-11-19 22:06 |只看该作者
谢谢仙子的回贴,

如果是权限的问题应该是会报错的, 浏览器上会出现和管理员联系之类的。。。。
log中也会有, 所以可以不是这个问题。

我先去用绝对路径试试看。

thanks again.

===============================================================
使用绝对路径也失败了。

还是没有找到建立的文件。

我增加了句 “print getcwd();” 也没有在浏览器里打印出来。

另外, 我用的系统是freebsd 7.1, Apache2 mod_perl 2。

[ 本帖最后由 huwenhuo 于 2009-11-19 22:26 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2009-11-19 23:23 |只看该作者
搞定了, 还是自己大意了。

print $h, "hehe";

这里错了, 应该是

print $h "hehe";

所以没出来。

还有一个原因可能是改了module后没有重启Apache, 因为在启动Apache时, 我加载了Rock.pm:

PerlModule myApache::Rocks

不过我不肯定这点, 我没有再试。

getcwd()的结果是根目录。

[ 本帖最后由 huwenhuo 于 2009-11-19 23:35 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP