我有以下文件夹:
uploads
orig
temp
它们都存在于具有 777 权限的服务器上:http://i.imgur.com/cz3eS.png
检查权限的脚本是:
# temp dir
push @tests, -d $temp_dir ? 'temp dir exist: OK' : 'temp dir exist: ERROR';
push @tests, mkdir("$temp_dir/test") ? 'temp dir mkdir: OK' : 'temp dir mkdir: ERROR';
push @tests, rmdir("$temp_dir/test") ? 'temp dir rmdir: OK' : 'temp dir rmdir: ERROR';
# upload dir
push @tests, -d $upload_dir ? 'upload dir exist: OK' : 'upload dir exist: ERROR';
push @tests, mkdir("$upload_dir/test") ? 'upload dir mkdir: OK' : 'upload dir mkdir: ERROR';
push @tests, rmdir("$upload_dir/test") ? 'upload dir rmdir: OK' : 'upload dir rmdir: ERROR';
# orig dir
push @tests, -d $orig_dir ? 'orig dir exist: OK' : 'orig dir exist: ERROR';
push @tests, mkdir("$orig_dir/test") ? 'orig dir mkdir: OK' : 'orig dir mkdir: ERROR';
push @tests, rmdir("$orig_dir/test") ? 'orig dir rmdir: OK' : 'orig dir rmdir: ERROR';
# htdocs dir
push @tests, -d $img_dir ? 'img dir exist: OK' : 'img dir exist: ERROR';
push @tests, mkdir("$img_dir/test") ? 'img dir mkdir: OK' : 'img dir mkdir: ERROR';
push @tests, rmdir("$img_dir/test") ? 'img dir rmdir: OK' : 'img dir rmdir: ERROR';
并且所有文件夹检查都返回错误!!!!
谁能想到问题出在哪里?!?!
关于 VARS 的额外信息
temp_dir => '/var/www/cgi-bin/temp',
upload_dir => '/var/www/cgi-bin/uploads',
cgi_dir => '/var/www/cgi-bin',
htdocs_dir => '/var/www/htdocs',
htdocs_tmp_dir => '/var/www/htdocs/tmp',
最佳答案
你的四行重复代码片段:
# temp dir
push @tests, -d $temp_dir ? 'temp dir exist: OK' : 'temp dir exist: ERROR';
push @tests, mkdir("$temp_dir/test") ? 'temp dir mkdir: OK' : 'temp dir mkdir: ERROR';
push @tests, rmdir("$temp_dir/test") ? 'temp dir rmdir: OK' : 'temp dir rmdir: ERROR';
应该在子程序中:
sub check_dir()
{
my($dir) = @_;
push @tests, (-d $dir) ? "$dir exist: OK' : "$dir exist: ERROR $!";
push @tests, mkdir("$dir/test") ? "$dir/test mkdir: OK" : "$dir/test mkdir: ERROR $!";
push @tests, rmdir("$dir/test") ? "$dir/test rmdir: OK" : "$dir/test rmdir: ERROR $!";
}
check_dir($temp_dir):
check_dir($upload_dir);
check_dir($orig_dir);
check_dir($img_dir);
当然,这假设 @tests
可以被 check_dir()
访问。它还将 -d
括在括号中,这可能会防止对参数的误解。
你列出的很有趣:
temp_dir => '/var/www/cgi-bin/temp',
upload_dir => '/var/www/cgi-bin/uploads',
cgi_dir => '/var/www/cgi-bin',
htdocs_dir => '/var/www/htdocs',
htdocs_tmp_dir => '/var/www/htdocs/tmp',
其中不包括原始代码中列出的 $img_dir
。这看起来也像是哈希的初始值设定项。假设哈希是 %dir_list
。你确定你不是故意的
使用:
check_dir($dir_list{temp_dir});
等等。如果您没有准确地向我们展示您正在执行的代码,您得到的答案将不如向我们展示我们可以测试和分析的可执行代码准确。
关于linux - 脚本无法确认文件夹,即使它们存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9987181/