读取文件时,Windows/Apache/Perl/CGI“访问被拒绝”

读取文件时,Windows/Apache/Perl/CGI“访问被拒绝”

自从我开始从事严肃的系统管理和开发工作(全部 *nix)以来,我还没有在 Windows 机器上做过任何事情。所以我可能问了一些简单的问题 - 但我还没有通过搜索找到答案。

我的 Windows Server 2008 运行的是 Apache 2.2。我可以顺利运行 Apache 安装时附带的 cgi-bin 目录中的“printenv.pl”perl 脚本...

但是,使用执行以下操作的脚本:

#!c:\perl\bin\perl.exe
print "Content-Type: text/plain; charset=iso-8859-1\n\n";
print `type C:\\Some\\Dir\\file.txt`;

我的 apache 日志仅显示:

[Tue Jun 22 13:13:55 2010] [error] [client 68.230.22.34] Access is denied.\r

我可以从 dos 提示符运行相同的 perl 脚本 - 因此我知道它对我的用户有效。我可以在任务管理器中看到 httpd.exe 正在以用户 SYSTEM 身份运行,因此我确保 file.txt 对 SYSTEM 是可读的。我甚至一度将其设置为对所有人都可读 - 但我仍然收到“访问被拒绝”错误。

谢谢...

答案1

您确定用户“SYSTEM”可以执行 perl.exe 吗?

答案2

好吧 - 事实证明该C:\some\dir\file.txt文件已加密。我花了一段时间,但我终于开始怀疑:“为什么该文件夹在 Windows 资源管理器中显示为绿色文本”。我不知道为什么,但我复制了一个 zip 文件,当他们解压时它们被加密了。一旦我关闭它,perl 脚本就可以读取。

相关内容