免费注册 查看新帖 |

Chinaunix

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

perl cgi web 页面访问问题求解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-02-28 09:30 |只看该作者 |倒序浏览
搭建服务器:ubuntu10.04、 apache 2.2.24、perl 5.10.1

httpd.conf配置内容:
  1. Alias /search/  /var/www/tangbuild/
  2. <Directory "/var/www/tangbuild/">
  3.      DirectoryIndex index.html
  4.      Allow from all
  5.      AllowOverride None
  6. </Directory>
  7. ScriptAlias /search/  /var/www/tangbuild/cgi-bin/
  8. <Directory "/var/www/tangbuild/cgi-bin/">
  9.     DirectoryIndex index.cgi,.pl
  10.     SetHandle perl-script
  11.     PerHandler ModPerl::Registry
  12.     Options +ExecCGI -MultiViews +SymLinksIfOwerMatch
  13.      Allow from all
  14.      AllowOverride None
  15. </Directory>
复制代码
本机访问 http://127.0.0.1/tangbuild.cgi-bin/login.cgi  正常,apache error.log报:log4j:ERROR setFile(null,false) call failed

远程访问该页面 http://IP/tangbuild.cgi-bin/login.cgi  则无法正常显示,
报错:
-e: Use of uninitialized value $search in concatenation(.) or string at /var/www/tangbuild/cgi-bing/login.cgi line 20.

对应代码内容:
  1. #!/usr/bin/perl -w
  2. use strict;

  3. use CGI qw/:standard :html3/;
  4. use CGI::Carp 'fatalsToBrowser';
  5. use CGI::Session;
  6. use XML::Simple;
  7. use Encode;
  8. use utf8;
  9. use open ":encoding(gbk)",":std";

  10. my $cgi = new CGI;
  11. my $y = new XML::Simple;
  12. my $search_word = $cgi->param('search_word');

  13. my $xml = `/var/www/supose/supose-0.6.2/bin/supose se -I /var/www/supose/repositroy  -Q '$search_word' -x `;
复制代码
“`/var/www/supose/supose-0.6.2/bin/supose se -I /var/www/supose/repositroy  -Q '$search_word' -x `”
执行结果是一个xml文件。

有人知道这个报错的原因吗?



论坛徽章:
0
2 [报告]
发表于 2014-02-28 10:00 |只看该作者
rexuekonglong 发表于 2014-02-28 09:30
搭建服务器:ubuntu10.04、 apache 2.2.24、perl 5.10.1

httpd.conf配置内容:本机访问 http://127.0.0. ...


问题找到:
  1. my $search_word = $cgi->param('search_word');
复制代码
修改成
  1. my $search_word = ‘abcd’;
复制代码
即直接赋值时,远程就可以访问程序页面。

但是,这程序就相当于没用了。  难道是有CGI 模块没有安装?

论坛徽章:
0
3 [报告]
发表于 2014-02-28 10:06 |只看该作者
rexuekonglong 发表于 2014-02-28 10:00
问题找到:
当修改成即直接赋值时,远程就可以访问程序页面。


{:2_166:}    。。。。发现原因了,是访问页面错误了,正确访问路径应该和httpd.conf 一致: http://IP/tangbuild/cig-bin/index.cgi   .

论坛徽章:
0
4 [报告]
发表于 2014-02-28 10:12 |只看该作者
貌似配置文件都有些问题吧。
怎么同时 Alias 和ScriptAlias search

论坛徽章:
0
5 [报告]
发表于 2014-03-01 16:33 |只看该作者
回复 4# fkiori

说实话,这个页面的配置是4年前的研发的架构师搞的,我是最近才开始学习perl,正好手头有这个源程序,就拿来改造并学习。

我看到apache error.log提示这个 ScriptAlias 会覆盖 Alias。不过能否讲解下,如果我这个是一个包含(cgi、html 文件)
的文字搜索页面, 我应该选择哪个?

   

论坛徽章:
0
6 [报告]
发表于 2014-03-03 16:56 |只看该作者
主页面: http://127.0.0.1/tangbuild.cgi-bin/index.cgi
程序运行跳转页面: http://127.0.0.1/tangbuild.cgi-bin/login.cgi
上面这个问题尝试过了,
如果屏蔽了第一段的:
  1. Alias /search/  /var/www/tangbuild/
复制代码
主页面那么将不能访问
如果屏蔽了第二段的:
  1. ScriptAlias /search/  /var/www/tangbuild/cgi-bin/
复制代码
主页面访问没有问题

真正的问题在于:其他电脑访问使用该程序时, 在程序运行跳转页面login.cgi 时,login.cgi会被下载到访问电脑本地,这是apache httpd.conf 设置存在什么问题么?求指导

论坛徽章:
0
7 [报告]
发表于 2014-03-03 17:10 |只看该作者
rexuekonglong 发表于 2014-03-03 16:56
主页面: http://127.0.0.1/tangbuild.cgi-bin/index.cgi
程序运行跳转页面: http://127.0.0.1/tangbuild ...


这个问题解决。。 需要调整访问电脑internet中安全级别,就可以直接访问而不是下载了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP