我有一个问题,我一直在努力去工作。首先,我很久以前编写了一个PERL脚本,它位于另一个服务器上。我们正在创建一个新的服务器,我已经下载/安装了草莓PERL 64位。我现在正在检查我的所有PERL脚本,以确保所有的脚本都能在新服务器上工作。
我将脚本转换为Strawberry想要的新方式(使用require来使用另一个在线文件),但我无法克服以下错误:拒绝打开用于编写的文件。
我启动了一个调用内联文件的shell程序:
require "cgi/cr/main_test.pl";此数组保存将通过以下方式运行的文本文件:
my @main = ("BOOKS","CDs","DVDs","VIDEOS","PERIODICALS","VIDEO-GAMES","TOYS","RECORDED-BOOKS","BINS");要求调用一个程序来打开文件以写入结果,然后遍历每个文本文件并显示和添加每个文件中的数字。
#!/usr/bin/perl -w
my $recFnd = "C:\\inetpub\\wwwroot\\cgi-bin\\CustomerRelations\\recs_found.txt";
chmod 0755, $recFnd;
print "<p>$recFnd</p>";
open (my $newloc, '>', $recFnd) or die "Couldn't open: $!";上面的是$recFnd打开一个文本文件,它将编写任何找到的代码(我有一个包含所有代码的文件)。我使用两者的数据来查找使用过的任何新代码。)。在下一行中,我更改了文件权限,但它只是经过(可能有效,但我无法测试,因为这是一个windows环境)。然后,我打印文件的位置7名称,以确保它有正确的文件。最后,开放的地方,我已经尝试了每一个版本,我可以让这个工作。最初打开文件的代码如下:
open (NEWLOC, "> recs_found.txt ") || die;不管我做什么,我都会犯一个权限错误。要写入的文件所在的文件夹中的每个人都在“建筑物完全控制”中。我不知道我能做些什么。
如果有人能帮忙,我会非常感激的。
发布于 2014-08-20 05:36:39
因此,如果这是Strawberry Perl,这是在Windows上,如果这些是脚本,它们可能在系统帐户下运行。您的问题可能是文件系统acls问题,而不是Perl方面的问题。
解决和解决此问题的方法是验证服务在哪个用户下运行。如果这是一个web应用程序,那么它将是运行Apache、IIS或类似程序的任何服务。它很可能是NetworkService账户。但是,您应该验证这一点。与所有事情一样,给予所有父目录读取权限并对该目录进行写入访问是一个好主意。
注意,Windows使用ACL作为模型,而不是UNIX模型。
如果其他脚本可以从web服务器写入文件,那么还会发生其他事情,但如果是这样的话,我会感到非常惊讶。
此外,post有一个UNIX行,而post则表示Windows实现。这在一定程度上是迂腐的,但解决这些问题需要对细节的关注,所以在这里学书呆子是很好的。
https://stackoverflow.com/questions/25298596
复制相似问题