在远程服务器上配置了一个cgi页面,该页面代码调用perl的xml::writer模块,生成XML文件无法成功。
我用perl写了一个页面test.cgi 该页面的基本功能就是:显示多个复选框(checkbox) 选中提交后,对应复选框的value值作为参数再传回test.cgi,并将这些参数写入xml 保存在远程服务器,与test.cgi相同的路径中。 我通过登录远程服务器,使用代码行 perl5.8 test.cgi可以成功实现 并生成了output.xml 为何在本地使用浏览器就不行?权限问题?求大神帮忙~~~~
另附貌似没有被执行的写XML部分的代码:
use IO;
my $output = new IO::File(">output.xml");
use XML::Writer;
my $writer = new XML::Writer( OUTPUT => $output );
$writer->xmlDecl( 'UTF-8' );
$writer->doctype( 'html' );
$writer->comment( 'My happy little HTML page' );
$writer->pi( 'foo', 'bar' );
$writer->startTag( 'html' );
$writer->startTag( 'body' );
$writer->startTag( 'h1' );
$writer->startTag( 'font', 'color' => 'green' );
$writer->characters( "<Hello World!>" );
$writer->endTag( );
$writer->endTag( );
$writer->dataElement( "p", "Nice to see you." );
$writer->endTag( );
$writer->endTag( );
$writer->end( );
补充:补充一下:会不会跟apache服务器有关?在apache config里有没有相关XML处理的模块之类的 没打开
追问:你好,感谢你的回答。 apache中cgi模块和配置都弄好了~这个cgi页面可以很好的显示,权限是755. 但就是生成xml这部分代码不能执行,不知道为啥~我远程登服务器那边用命令行运行就可以。郁闷了~我把test.cgi的用户和用户组改为root也不行。 在目录下命令行直接运行没有任何错误提示啊~我大概定位问题在IO::File对象这里:
我对IO::File对象指定输出路径my $output = new IO::File(">output.xml");并写了个判断
if (!defined $output) {
print "output not defined<br>";
}
else {
print " output: $output";
}
结果发现浏览器打印了:output not defined
我又调整了IO::File对象为$output = new IO::File(); 就可以打印出IO::File对象。。
答案:首先是要配置apache能处理cgi,然后要把文件的所有者设为apache用户,还要给cgi文件设置执行权限。
上一个:IIS6如何查看PHP运行模式是ISAPI还是CGI
下一个:cgi程序如何接收Qt客户端参数?