2016-10-02 17 views
0

我正在创建一个网站,它将接收用户信息并存储在mysql数据库中。当我通过终端运行脚本时,出现以下错误:

Use of uninitialized value $ENV{"REQUEST_METHOD"} in string eq at ./folder1/friends-mysql.cgi line 16. 

我不确定为什么出现此错误。这里是我的脚本:

#!/usr/bin/perl -w 
use DBI; 

#Declare Variables with MYSQL Connection Data 
$db="my database"; 
$user="my username"; 
$passwd="password"; 
$host="host"; 
$connectionInfo=""; 

#Print HTTP header 
print "Content-type:text/html\n\n"; 

#Check if Method is GET 
if ($ENV{REQUEST_METHOD} eq "GET") { -->This is line 16 
     &displayform(); 
     exit; 
} 
else {    #If Method not GET process form and insert into DB 
     &parseform(); 
     &insertfriend(); 
     exit; 
} 

#Standard form parsing using POST method 
sub parseform { 
     read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); 
     @pairs = split(/&/, $buffer); 
     foreach $pair(@pairs) { 
       ($name, $value) = split(/=/, $pair); 
       $value =~ tr/+/ /; 
       $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; 
       $FORM{$name} = $value; 
     } 
} 
+3

'$ ENV {REQUEST_METHOD}'会提到所谓的环境变量“REQUEST_METHOD”。在运行脚本之前,您是否创建并导出了一个环境变量? 'export REQUEST_METHOD =“GET”' –

+0

@ chris-doyle那可能是答案所以......你知道该怎么办:-) –

+0

@ChrisDoyle我必须把'export REQUEST_METHOD =“GET”'因为我把它放在我的脚本,但我仍然没有得到结果。当我从浏览器执行脚本时,我会看到整个脚本。 –

回答

1

当你的程序运行的Web应用程序,它是CGI协议,设置多个环境变量,包括REQUEST_METHOD

如果你想从命令测试程序行,那么你必须在运行程序

像这样的事情

$ export REQUEST_METHOD="GET" 
$ ./folder1/friends-mysql.cgi 
0之前手动设置必要的变量

注意的是,还添加use strict给你写的每一个Perl程序的顶部必不可少use warnings 'all'最好-w的家当线

相关问题