我正在创建一个.cgi文件,它以表格格式打印网页上数据库表中的所有值.问题是,当我在putty终端模拟器上运行该文件时,它运行正常,但当我尝试在浏览器上运行该文件时,我得到了即使T在服务器上键入文件的正确位置,也会显示错误消息"找不到文件".
我无法理解我做错了什么?我使用putty将我的文件权限设置为chmod 755*,但它仍然无法正常工作.这是一个文件权限或表结构的问题是否在浏览器上运行是错误的?
请帮忙...
people.CGI文件
#!/usr/bin/perl
use CGI;
use DBI;
use strict;
#use warnings;
#use diagnostics;
print "Content-type:text/html\r\n\r\n";
#$q = CGI->new;
#print $q->header;
my $dsn = "DBI:mysql:Demo:localhost"; # Data source name
my $username = "mint"; # User name
my $password = "MINT123"; # Password
my $dbh;
my $sth; # Database and statement handles
$dbh = DBI->connect($dsn, $username, $password);
$sth = $dbh->prepare("SELECT * from people");
$sth->execute();
print "<h1>ganesh</h1>";
print "<table >
<tr>
<th>ID</th>
<th>Name of People Involved</th>
<th>Position</th>
<th>Roles(A user can …
Run Code Online (Sandbox Code Playgroud) 我有一个从平面文件中读取的数组,如下所示:
@Array = ('01026¦Cummington¦Massachusetts¦MA',
'01026¦West Cummington¦Massachusetts¦MA',
'01030¦East Hampton¦Massachusetts¦MA',
'01027¦Easthampton¦Massachusetts¦MA',
'01027¦Loudville¦Massachusetts¦MA',
'01030¦Mount Tom¦Massachusetts¦MA',
'01027¦Westhampton¦Massachusetts¦MA',
'01028¦East Longmeadow¦Massachusetts¦MA',
'01029¦Big Pond¦Massachusetts¦MA');
Run Code Online (Sandbox Code Playgroud)
我想要做的是获得@Array [1]的三个随机"数值",所以我得到一个如下所示的输出:
print "01028
01026
01030";
Run Code Online (Sandbox Code Playgroud) 我想用PERL做一个简单的测试.我编写了input.html并将其放在hgi文件夹中,并将其放在cgi-bin中的output.cgi中.两者都在XAMPP文件夹中,使用mac.这也是使用apache.
HTML文件
<!doctype html>
<html lang="en">
<body>
<form action="/cgi-bin/output.cgi" method="post">
Enter Fahrenheit: <input type="text" name="fahrenheit" /><br />
Enter Distance in Miles: <input type="text" name="distance" /><br />
<input type="submit" value="Convert!" />
</form>
Run Code Online (Sandbox Code Playgroud)
这是用户按"转换"时应显示的CGI文件
#!/usr/bin/perl -w
use strict;
use warnings;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);
print "Content-type: text/html\n\n";
#### read form data
my $fahrenheit = param('fahrenheit');
my $distance = param('distance');
#### do the math
my $celcius = ($fahrenheit * 18.8) + 32;
my $kilometers = $distance * 1.60934;
#### display results …
Run Code Online (Sandbox Code Playgroud) 这是学校项目的一部分.我无法弄清楚我的正则表达式中的问题是什么.我有更多的工作,但这些给我带来了困难.Apache没有告诉你出错的确切位置.
First和Last名称必须是两个简单名称,并以Lastname,Firstname格式输出
my $name = param('name');
if($name =~ {2}) {
print "Name will be stored as $2, $1<br/><br/>";
} else {
print "Bad name. Enter just two names, your first and last<br/><br/>";
}
Run Code Online (Sandbox Code Playgroud)
密码必须按照正则表达式的顺序排列.从单个大写字母,2个数字,单个空格,2-3个小写字母,一个特殊字符(不是字母或数字)开始.
my $password = param('password');
if ($password =~ /[A-Z]+\d{2}+\s+[a-z]{2,3}+-]\^$/) {
print "Password $password was accepted<br/><br/>";
} else {
print "Bad password, $password was not accepted<br/><br/>";
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Perl 但不使用 CGI 或任何其他框架来创建一个标准论坛风格的网站。我之前见过一个名为“cookies.pl”的脚本,但找不到任何有关它的文档。有没有一种方法可以仅使用核心模块来设置/读取 cookie?
在我的CGI脚本中:
system("/home/httpd/cgi-bin/hbplus/hbplus /home/httpd/html/pdb1wdk.ent");
print $?;
Run Code Online (Sandbox Code Playgroud)
系统命令传递文件(例如pdb1wdk.ent
)hbplus
.这是一个用C编写的exe文件,它处理输入文件以生成输出文件.
该命令可以在命令提示符下完美地工作,并在当前工作目录中创建一个文件,但不能在使用我的CGI脚本运行时创建system
.
我也尝试hbplus
从Python脚本和shell脚本运行并从Perl CGI调用这些,但这会产生分段错误.
这在CGI文件中使用的含义是什么
my %page = ( web => \%WEB );
Run Code Online (Sandbox Code Playgroud)
此代码使用perl代码在cgi文件中编写.
我有一个从URL访问的perl CGI脚本。我已经使用检查过语法perl -wc
,似乎还可以。但是,用于创建目录的命令均未正确执行。权限设置为755
。
有谁知道如何诊断这个问题?
这是代码:
#!/usr/bin/perl
use CGI;
#-- create CGI Query
$q = CGI->new;
$prefix = "X__";
print "Content-type: text/html\n\n";
#-- get companyID
$entityID = $q->param('entityID');
#-- get directory name
$dir = "${prefix}${entityID}";
#-- change directory
chdir("/var/www/html/web/customers");
#-- create parent company directory
`sudo mkdir -m 755 $dir`;
print "${entityID}";
Run Code Online (Sandbox Code Playgroud) 我究竟做错了什么?我尝试了很多东西,但似乎无法从这个文件中读取.谢谢!
my $d = 'URLs.txt';
open(my $fh, '<:encoding(UTF-8)', $d)
#opendir(D, "$d") || die "Can't open directory $d: $!\n";
or die "Can't open directory $d: $!\n";
my @list = readdir($fh);
closedir($fh);
foreach my $f (@list) {
my $json_data = get "$f";
my $json_obj = new JSON;
my $URLdata = $json_obj->decode($json_data);
return $URLdata->{'status'} eq 'UP';
}
Run Code Online (Sandbox Code Playgroud) 这与C/C++(PHP 是用它编写的)有关吗?或者它与CGI机制或类似的东西有关?
提前致谢。