【问题标题】:Perl CGI script working from cmd but not from browserPerl CGI 脚本从 cmd 工作,但不能从浏览器工作
【发布时间】:2013-06-14 09:53:47
【问题描述】:

我有一个 CGI perl 脚本,它将首先 chdir 到指定位置,然后运行命令(此命令仅在此指定目录中运行,因为它使用此目录中的输入文件 build.xml,如果我们尝试在任何其他位置运行此命令,它会引发错误“Build failed Buildfile: build.xml does not exist!”)。如果我在 cmd 中执行这个 perl 脚本,该脚本可以正常工作。但在浏览器中不起作用,它会引发相同的错误 "Build failed Buildfile: build.xml does not exist!"怎么会这样?有人可以帮我解决这个问题。 这是代码

#!/usr/local/bin/perl - w
use strict;
use CGI ':standard';

print header;
print start_html("welcome");
print "<h1>welcome</h1>\n";
print_prompt();
print end_html;

sub print_prompt {
print start_form;
print "<em>welcome</em><br>";
chdir('G:\\Documents and Settings/Administrator/eworkspace/Sample');
print `ant`;

}

使用 cwd 我发现我的目录没有被 chdir('G:\\Documents and Settings/Administrator/eworkspace/Sample'); 更改,这是怎么回事?

【问题讨论】:

  • 尝试使用Cwd 检查目录更改是否有效。另外,use strict.
  • 谢谢。使用 cwd 我发现我的目录没有被 chdir('G:\\Documents and Settings/Administrator/eworkspace/Sample'); 更改,这是怎么回事?
  • 如果它可以在命令行上运行,但不能在浏览器中运行,并且脚本没有更改目录,那么您可能需要检查您的文件夹权限以确保 Web 服务器可以访问它。听起来网络服务器无法访问该目录。
  • 可能是\\ 。您正在使用单引号 (')。这些不会插入变量和其他内容,因此\ \ 。没有必要逃跑。尝试使用一个反斜杠。此外,带有斜杠和反斜杠的整个路径可能是错误的。 PS:我讨厌 Markdown 中的反斜杠。
  • @Analog 谢谢。现在可以了。

标签: windows perl cgi system


【解决方案1】:
chdir('G:/Documents and Settings/Administrator/eworkspace/Sample')
  or die $!;

会告诉你 chdir 是否成功。如果不是,则可能是 Web 服务器用户无权访问指定文件夹。

【讨论】:

  • 是的。 Web 服务器没有访问权限,我更改了权限并且它工作。谢谢。
猜你喜欢
  • 2020-07-10
  • 2012-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-14
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多