我有一个 perl 脚本,它想要使用 opendir/readdir 或 glob 获取目录中的文件列表。如果该目录位于 perl 脚本所在的目录或 /tmp 下方,则它可以正常工作。对于任何其他目录,它都显示为空!
我是不是漏掉了什么?我确保我的权限与 /tmp 的权限完全匹配,但我无法读取该其他目录上的任何内容。我需要更改一些奇怪的指令吗?我甚至在所有 conf 文件中查找了对“tmp”的特殊引用,但一无所获。
有人见过这种行为吗?我正在运行 RHEL6.2
-标记
答案1
此脚本在 < RHEL6.2 上能用吗?您使用的是 mod_perl 还是 perl cgi?如果是后者,您使用的是 suExec 吗?如果是,请尝试将其添加到您的脚本中,以防日志记录在某处中断:
使用 CGI::Carp qw(fatalsToBrowser);
答案2
确保在脚本中使用绝对路径名。
例如:
do "../perlscript.pl";
do "/var/www/perl/perlscript.pl";
您的所有陈述都一样open(...);
。
这是用于查找脚本所在的服务器目录的一个很好的代码片段。
#!/usr/bin/perl
use Cwd;
print "Content-Type: text/plain\n\n"
print getcwd(), $/;